По крайней мере два браузера - 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, и это должно привести к повторной загрузке этого URL, чтобы подтвердить, что старого перенаправления еще нет.
Изменить: некоторые комментарии ставят под сомнение это, см. Ниже.
Если у вас нет контроля над сайтом, на котором находилась предыдущая цель перенаправления, вам не повезло. Попробуйте и попросите владельца сайта перенаправить обратно к вам.
Также профилактика лучше лечения - избегайте перенаправления 301, если вы не уверены, что хотите навсегда снять старый URL-адрес.