В чем разница между заголовками Expires и Cache-Control?

В чем разница между заголовками Expires и Cache-Control?

Ответ 1

Cache-Control был введен в HTTP/1.1 и предлагает больше возможностей, чем Expires. Они могут использоваться для выполнения одного и того же, но значение данных для Expires является датой HTTP, тогда как Cache-Control max-age позволяет указать относительное количество времени, чтобы вы могли указать "X часов после запроса страницы".

Управление кэшем HTML - очень похожий вопрос и имеет хорошую ссылку на учебник по кешированию, который должен отвечать на большинство ваших вопросов (например, http://www.mnot.net/cache_docs/#EXPIRES). Итак, Expires рекомендуется для статических ресурсов, таких как изображения и Cache-Control, когда вам нужно больше контролировать, как выполняется кеширование.

Ответ 2

Если вы используете CDN (Cloud Delivery Network), я рекомендую использовать Cache-Control с максимальным временем в секундах. Например, Cache-Control: max-age = 604800. Это предотвращает запрос-пики на исходный сервер: с "Истекает Wed, 30 Oct 20xx 04:37:07 GMT" все браузеры будут запрашивать вас одновременно.

Ответ 3

В соответствии с этой статьей Google Developers HTTP-кеширование:

Заголовок Cache-Control был определен как часть спецификации HTTP/1.1 и заменяет предыдущие заголовки (например, Expires), используемые для определения ответа политики кэширования. Все современные браузеры поддерживают Cache-Control, следовательно это все, что нам нужно.

Ответ 4

Heroku devcenter имеет отличную статью по этому вопросу.

Цитата из него,

В то время как заголовок Cache-Control включает кеширование на стороне клиента и устанавливает максимальный возраст ресурса, заголовок Expires используется для указания определенного момента времени, когда ресурс перестает быть действительным.

Ответ 5

Cache-Control был определен в HTTP/1.1, сообщает всем механизмам кэширования от сервера к клиенту, могут ли они кэшировать этот объект. Он измеряется в секундах: Cache-Control: max-age=3600.

В поле заголовка Expires указывается дата/время, после которого ответ считается устаревшим. Значение Expires - это метка времени HTTP: Expires: Tue, 18 Jul 2017 16:07:23 GMT.

Если ответ содержит поле Cache-Control с директивой max-age, получатель ДОЛЖЕН игнорировать поле Expires.