Максимальный возраст контроля за кэшем HTTP, необходимо подтвердить - PullRequest
69 голосов
/ 29 мая 2010

У меня есть пара запросов, связанных с Cache-Control.

Если я укажу Cache-Control max-age=3600, must-revalidate для статического файла html / js / images / css с последним измененным заголовком, определенным в заголовке HTTP:

  1. Кэш браузера / прокси (например, Squid / Akamai) проходит весь путь до исходного сервера для проверки до истечения максимального срока действия ? Или он будет обслуживать контент из кэша до истечения максимального срока?
  2. После истечения максимального срока действия (то есть истечения срока действия из кэша) существует ли проверка If-Modified-Since или содержимое повторно загружается с исходного сервера без проверки If-Modified-Since?

Ответы [ 3 ]

52 голосов
/ 04 января 2012

a) Если сервер включает этот заголовок:

Cache-Control "max-age=3600, must-revalidate"

, он сообщает как клиентским, так и прокси-кэшам, что после того, как контент устарел (старше 3600 секунд), он должен пройти повторную проверку на исходном сервере, прежде чемони могут обслуживать контент.Это должно быть поведение по умолчанию систем кэширования, но директива must-revalidate делает это требование однозначным.

б) Клиент должен пройти повторную проверку.Он может быть повторно проверен с использованием заголовков If-Match или If-None-Match с ETag или может использовать заголовки If-Modified-Since или If-Unmodified-Since с датой.

4 голосов
/ 31 мая 2010

а. Посмотрите на вкладку "Статистика" на этой странице и посмотрите, что произойдет.

б. После истечения срока действия браузер проверит на сервере, обновляется ли файл. Если нет, сервер ответит заголовком 304 Not Modified и ничего не загрузится.

Вы можете проверить это поведение самостоятельно, взглянув на панель «Net» в Firebug или аналогичные инструменты. Просто введите URL-адрес в адресную строку и сравните количество HTTP-запросов с количеством запросов, когда ваш кэш пуст.

0 голосов
/ 10 апреля 2019

Данные ответы неверны, по крайней мере, для веб-браузеров в 2019 году.

"После истечения срока действия браузер проверит на сервере, обновляется ли файл" <- не верно </p>

У меня есть статический файл с Cache-Control: public, must-revalidate, max-age = 864000, и Chrome и Firefox каждый раз делают запрос (и каждый раз получают 304 Not Modified).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...