Подтвердить что ты не робот

Нет истечения срока действия отправленного заголовка, кэширования содержимого, до тех пор, пока браузер не выполнит условный запрос GET?

Предположите настройки браузера по умолчанию, и содержимое отправляется без истечения срока хранения заголовков.

  • пользователь посещает веб-сайт, изображения в кэше браузера и т.д.
  • Пользователь не закрывает браузер или обновляет страницу.
  • Пользователь продолжает нормально искать сайт.
  • Предположим, что просмотр не удаляет кеш по какой-либо причине.

Браузер будет кэшировать изображения и т.д., когда пользователь просматривает, но неясно, когда он выдаст условный запрос GET, чтобы спросить о свежести контента (кроме обновления страницы). Если это специфический для браузера параметр, где я могу увидеть его значение (для таких браузеров, как: safari, IE, FireFox, Chrome).

[править: да - я понимаю, что вы всегда должны отправлять истекающие заголовки. Однако это исследование направлено на понимание того, как браузер работает с контентом без истечения заголовков.]

4b9b3361

Ответ 1

HTTP/1.1 определяет выбор механизмов кэширования; заголовок expires является просто одним, есть также заголовок cache-control.

Чтобы ответить на ваш вопрос: для ресурса, возвращенного без заголовка expires, вы должны рассмотреть возвращенные директивы cache-control.

HTTP/1.1 не определяет поведение кэширования для ресурса, который не имеет заголовков, связанных с кешем. Если ресурс отправлен без заголовков cache-control или expires, вы должны предположить, что клиент сделает очередной (не условный) запрос при следующем запросе тех же ресурсов.

Любое отклонение от этого поведения квалифицирует клиента как не полностью совместимый HTTP-клиент, и в этом случае возникает вопрос: какое поведение следует ожидать от несоответствующего HTTP-клиента? На это нет способа ответить.

HTTP-кеширование является сложным, чтобы полностью понять, что должен сделать соответствующий клиент в данном сценарии, прочитать и понять спецификацию кэширования HTTP.

Ответ 2

Из Спецификация кэширования HTTP (раздел 13.4): если специально не ограничено директивой управления кешем (раздел 14.9), система кеширования МОЖЕТЕ всегда сохранять успешный ответ (см. Раздел 13.8) в качестве записи в кэш, МОЖЕТ вернуть его без проверки, если он свежий, и МОЖЕТ вернуть его после успешной проверки. Это означает, что пользовательский агент может делать все, что захочет, если не будет отправлен заголовок управления кэшем. Большинство браузеров используют комбинацию пользовательских настроек и эвристики, чтобы определить, будет ли (и как долго) кэшироваться в этой ситуации.

Ответ 3

Если вы не отправите заголовок expires, большинство браузеров сделают запрос GET для каждого последующего обновления и либо получат HTTP 200 OK (он снова загрузит контент), либо HTTP 304 Not Modified (и используйте данные в кеше).