Как долго сохраняется перенаправление 302 в браузере?

Из-за неправильной конфигурации нашего веб-сервера основной домен отправил 302 редирект в новое местоположение. Мы исправили эту проблему. При очистке кеша браузера теперь все работает нормально.

Для "обычного" клиента, который не очищает свой кэш: как долго хранится перенаправление 302 в браузере?

Я ищу конкретное время кэширования (если есть) для каждого из основных браузеров (Chrome, Firefox, Safari, Opera, Edge, IE 12) с настройками по умолчанию.

Ответ 1

Он не должен кэшироваться вообще, если не имеется заголовок Cache-Control или Expires, возвращаемый веб-сервером. Согласно RFC 2616, раздел 10.3.3 302 Найдено

Запрошенный ресурс временно находится под другим URI. Так как перенаправление может быть иногда изменено, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов. Этот ответ может быть только кэшируемым, если указано полем Cache-Control или Expires.

Ответ 2

Стандарт, на который ссылается Джон Лин, использует "СЛЕДУЮЩИЙ", который не так силен, как "ДОЛЖЕН" в RFC-жаргоне. Это не просто теоретическое разграничение; Cloudflare, например, выполняет переадресацию кешей:

Если не указаны заголовки кеша (без Cache-Control или Expires) и url является кешируемым (.jpg,.css,.js и т.д.), тогда CloudFlare кэширует оба 301 и 302 с. Мы кэшируем 301 в течение нескольких часов и 302 секунд для более короткий период времени (~ 20 минут).

Таким образом, вы должны либо убедиться, что сможете справиться с этим, либо использовать явные заголовки (например, Cache-Control: private, no-cache), чтобы направлять браузеры и промежуточные продукты против его кеширования.

Ответ 3

Это зависит от настроек кэширования отдельных клиентских браузеров: IE имеет возможность "НИКОГДА" проверять наличие новых страниц, это имеет тот же эффект при перенаправлении. И AFAIR IE "Автоматические" настройки (по умолчанию?) Не намного лучше.

Ответ 4

Fire Fox

Его не следует кэшировать, за ошибку 812167

Ответ 5

Используя инструмент Steve Sounder Redirect Caching Tests (спасибо @LeonidVasilev), кажется, что результаты могут не соответствовать ожидаемым. Без заголовков или файлов cookie с истекшим сроком действия результаты были следующими:

Chrome 71: не кэшируется ✔
Firefox 64: кэшированный ✕
Safari 12: кэшированный ✕

Таким образом, несмотря на то, что в RFC 2616, раздел 10.3.3 302 найдено, указано, что не все браузеры следуют этим рекомендациям или тому, что можно считать ожидаемым поведением :(