Я разрабатывал программу Python для очистки данных из Интернета, при запросе страницы с веб-сайта я проверил поле заголовка, оно содержало все остальные поля, такие как сервер, через, дата и т.д., Но большинство ответов на сайте не содержали «Last-Modified» "поле в нем? В чем причина этого?
1 ответ
Вероятно, по этой причине:
Если вы удалите заголовок Last-Modified и ETag, вы полностью исключите запросы If-Modified-Since и If-None-Match и их 304 неотмененных ответов, поэтому файл будет оставаться в кэше без проверки обновлений, пока заголовок Expires не покажет новый контент доступен!
При удалении заголовка ETag и заголовков Last-Modified из ваших статических файлов (images, javascript, css) браузеры и кэши не смогут проверять кэшированную версию файла по сравнению с реальной версией. Включая также заголовок Cache-Control и заголовок Expires, вы можете указать, что определенные файлы должны кэшироваться в течение определенного периода времени, и вы волшебным образом (это обещание действительно уникальный прием) исключаете любые запросы проверки!
Заголовок ETag
- это просто уникальный код (обычно хеш), который браузер может проверить, чтобы увидеть, изменился ли ресурс.
Таким образом, не включая этот заголовок или ETag
, но включая заголовок Expires
и Cache-Control
:
- браузер будет использовать свою кэшированную копию, пока не истечет срок действия в заголовке
Expires
- и также не будет отправлять запросы проверки (я думаю, что это будут запросы
HEAD
чтобы заголовки проверяли наличие обновленной датыLast-Modified
) для проверки состояния изменения.
То, что браузеры не отправляют запросы проверки, а просто делают недействительными кэшированные копии в будущем, сокращает количество HTTP-запросов и повышает производительность веб-сервера, что важно для серверов, работающих в Интернете, где они сталкиваются с ботами, скребками и т.п.