Я разрабатывал программу Python для очистки данных из Интернета, при запросе страницы с веб-сайта я проверил поле заголовка, оно содержало все остальные поля, такие как сервер, через, дата и т.д., Но большинство ответов на сайте не содержали «Last-Modified» "поле в нем? В чем причина этого?

1 ответ1

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-запросов и повышает производительность веб-сервера, что важно для серверов, работающих в Интернете, где они сталкиваются с ботами, скребками и т.п.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .