Как минимум два браузера - Chrome и Firefox - будут кэшировать перенаправление 301 с без даты истечения срока действия .
То есть он будет сохраняться в кэше до тех пор, покакак кеш браузера может вместить его.Он будет удален из кеша, если вы вручную очистите кеш или очистите записи в кеше, чтобы освободить место для новых.
Вы можете проверить это, по крайней мере, в Firefox, перейдя к about:cache
и найдяэто под дисковым кешем.
Я не знаю о поведении других браузеров, таких как IE10 / IE11.Однако, учитывая, что другие браузеры кэшируют его на неопределенный срок, вам все равно придется это учитывать.
Во всех браузерах, включая Chrome / Firefox, все еще возможно переопределить это поведение по умолчанию, используя заголовки, как описано ниже:
Примечание: этот ответ был написан в 2014 году и поведение браузераможет меняться со временем.
Если вы не хотите, чтобы кеширование перенаправлялось
Это неопределенное кэширование только по умолчанию кэширование этими браузерами при отсутствии заголовков Cache-Control.Логика заключается в том, что вы указываете «постоянный» редирект и не предоставляете им никаких других инструкций кэширования, поэтому они будут обрабатывать его так, как если бы вы хотели, чтобы оно кэшировалось бесконечно.
Браузеры по-прежнему соблюдают Cache-Control иЗаголовки с истекающим сроком действия, как и в любом другом ответе, если они указаны.
Вы можете добавить заголовки, такие как 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.