Нет истечения срока действия отправленного заголовка, кэширования содержимого, до тех пор, пока браузер не выполнит условный запрос GET?
Предположите настройки браузера по умолчанию, и содержимое отправляется без истечения срока хранения заголовков.
- пользователь посещает веб-сайт, изображения в кэше браузера и т.д.
- Пользователь не закрывает браузер или обновляет страницу.
- Пользователь продолжает нормально искать сайт.
- Предположим, что просмотр не удаляет кеш по какой-либо причине.
Браузер будет кэшировать изображения и т.д., когда пользователь просматривает, но неясно, когда он выдаст условный запрос GET, чтобы спросить о свежести контента (кроме обновления страницы). Если это специфический для браузера параметр, где я могу увидеть его значение (для таких браузеров, как: safari, IE, FireFox, Chrome).
[править: да - я понимаю, что вы всегда должны отправлять истекающие заголовки. Однако это исследование направлено на понимание того, как браузер работает с контентом без истечения заголовков.]
Ответы
Ответ 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 (и используйте данные в кеше).