Ниже приведен короткий гибкий фрагмент, который преобразует строку datetime в безопасном для кросс-браузера стиле, как nicel, подробно описанный @ drankin2112.
var inputTimestamp = "2014-04-29 13:00:15"; //example
var partsTimestamp = inputTimestamp.split(/[ \/:-]/g);
if(partsTimestamp.length < 6) {
partsTimestamp = partsTimestamp.concat(['00', '00', '00'].slice(0, 6 - partsTimestamp.length));
}
//if your string-format is something like '7/02/2014'...
//use: var tstring = partsTimestamp.slice(0, 3).reverse().join('-');
var tstring = partsTimestamp.slice(0, 3).join('-');
tstring += 'T' + partsTimestamp.slice(3).join(':') + 'Z'; //configure as needed
var timestamp = Date.parse(tstring);
Ваш браузер должен предоставить тот же результат временной метки, что и Date.parse
с:
(new Date(tstring)).getTime()
301
является кэшируемым ответом на HTTP RFC, и браузеры будут кэшировать его в зависимости от заголовков кеширования HTTP, которые у вас есть на ответ. Используйте FireBug или Charles, чтобы изучить заголовки ответов, чтобы узнать точную продолжительность ответа на кеширование.
Если вы хотите контролировать продолжительность кэширования, вы можете использовать заголовки ответа HTTP Cache-Control
и Expires
сделать то же самое. Кроме того, если вы вообще не хотите кэшировать ответ 301
, используйте следующие заголовки.
Cache-Control: no-store, no-cache, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 GMT
У меня есть простое решение, которое работало во всех основных браузерах (последняя версия), включая IE, Chrome и FF
Попросите пользователя отправить форму сообщения на этом URL-адресе, и кешированная переадресация исчезла:)
<body onload="document.forms[0].submit()">
<form action="https://forum.pirati.cz/unreadposts.html" method="post">
<input type="submit" value="fix" />
</form>
</body>
Ответ, который помогает тем, кто отчаянно хочет избавиться от кеша redirect:
Chrome кэширует 301 перенаправление бесконечно или пока вы не откроете DevTools, установите флажок Отключить кеш (пока DevTools открыт), и перезагрузите страницу.
Это работало для меня в Chrome 39, но, к сожалению, не для localhost.
localhost:8000
до localhost
(порт 80). Я также очистил все данные сайта / приложения как с localhost, так и с localhost: 8000, но это тоже не помогло.
– Dennis98
29 November 2017 в 14:02
в качестве ответа @thomasrutter
Если вы ранее отправили 301 переадресацию, но хотите отменить это
Если у людей все еще есть переадресация 301 кеширования в браузере они будут по-прежнему попадать на целевую страницу, независимо от того, имеет ли исходная страница редирект на месте. Ваши варианты для исправления этого включают в себя:
Самое простое и лучшее решение - выпустить еще 301 перенаправление обратно.
Браузер поймет, что он направлен обратно на то, что он ранее считалось, что это выведенный из эксплуатации URL, и это должно привести к повторному извлечению этого URL-адреса, чтобы подтвердить, что старое перенаправление еще не существует.
Если у вас нет контроля над сайтом, где предыдущий перенаправлена цель, тогда вам удача. Попробуйте попросить владельца сайта перенаправить обратно к вам.
blockquote> blockquote>На самом деле это означает:
- a.com 301 - b. com
- удалить 301.com
- сайта.com.com на сайт a.com
Затем он работает.
a.com
301 - & gt; b.com) (удалить a.com
301) (добавить a.com/abcdefg
301 - & gt; a.com
) и заставить клиента как-то просмотреть a.com/abcdefg
?
– nemec
5 August 2016 в 19:42
Для целей тестирования (так, без кэшированных переадресаций), люди могут открывать NEW PRIVATE WINDOW: нажмите CTRL+SHIFT+
N
[или P
]
Как минимум два браузера - Chrome и Firefox - будут кэшировать 301-редирект с без истечения срока годности .
То есть он будет кэшироваться до тех пор, пока кеш браузера может вместить его. Он будет удален из кеша, если вы вручную очистите кеш, или если записи кэша будут очищены, чтобы освободить место для новых.
Вы можете проверить это, по крайней мере, в Firefox, перейдя в about:cache
и найти его в дисковый кеш.
Я не знаю о поведении других браузеров, таких как IE10 / IE11. Однако, учитывая, что другие браузеры кэшируют его на неопределенный срок, вам все равно придется приспособиться к этому.
Во всех браузерах, включая Chrome / Firefox, по-прежнему можно переопределить это поведение по умолчанию с использованием заголовков, как описано ниже:
Примечание: этот ответ был написан в 2014 году и поведение браузера может измениться с течением времени.
Если вы не хотите, чтобы перенаправление было кэшировано
Это неопределенное кеширование - это только по умолчанию кеширование этими браузерами при отсутствии заголовков Cache-Control. Логика заключается в том, что вы указываете «постоянную» перенаправление и не даете им никаких других инструкций кэширования, поэтому они будут обрабатывать ее так, как если бы вы хотели ее кешировать неограниченно.
В браузерах по-прежнему соблюдается Cache-Control и Expires заголовки, как с любым другим ответом, если они указаны.
Вы можете добавить заголовки, такие как Cache-Control: max-age=3600
или Expires: Thu, 01 Dec 2014 16:00:00 GMT
, в свои 301 переадресацию. Вы даже можете добавить Cache-Control: no-cache
, чтобы он не был постоянно кэширован браузером или Cache-Control: no-store
, поэтому браузер не может быть сохранен в временном хранилище браузером.
Лучшая альтернатива на мой взгляд , однако, заключается в использовании перенаправления 302 или 307. Это не означает, что браузеры или кеши являются «перманентными» перенаправленными и поэтому не должны кэшироваться в отсутствие заголовков Cache-Control.
Мне кажется, что вы отправляете 301 редирект, но отмечая, что он не кэшируемый, идет против духа того, для чего предназначен переадресация 301, хотя это может быть технически обоснованным. YMMV, и вы можете найти крайние случаи, когда имеет смысл для «постоянного» перенаправления иметь ограничение по времени.
Если вы ранее выдали 301-редирект, но хотите отказаться от этого
Если у людей все еще есть переадресация 301 кеширования в своем браузере, они будут по-прежнему отправляться на целевую страницу независимо от того, имеет ли исходная страница редирект на месте. Ваши варианты для исправления этого включают в себя:
Также предотвращение лучше, чем лечение - избегайте перенаправления 301, если вы не уверены, что хотите окончательно удалить комиссию старого URL.
http://www.SOMEHOST.com
в https://www.SOMEHOST.com
. Но теперь http://www.SOMEHOST.com
должен быть основным хостом для сайта. Таким образом, перенаправление с https на http удалено. Как вы показываете, я сделал перенаправление 301 с https://www.SOMEHOST.com
до http://www.SOMEHOST.com
, но вижу цикл. Браузер не переучивал ...
– Yuriy Kolodovskyy
6 May 2014 в 08:49
Чтобы очистить постоянную переадресацию, перейдите в chrome: // net-internals. Справа от верхней красной строки состояния щелкните стрелку вниз ▼, чтобы открыть раскрывающееся меню, а в группе «Инструменты» выберите «Очистить кеш».
Начиная с версии 48, это было единственное, что помогло мне очистить кешированный 301.
Проверьте свои переадресации, используя режим инкогнито / InPrivate, поэтому, когда вы закроете браузер, он будет скрывать этот кеш, а повторное открытие окна не будет содержать кеш.