В чем разница между заголовками 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
.
Ответ 6
Если вы еще интересны. Я оставляю эту рекомендацию непосредственно у мальчиков из Google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Они предпочитают Expires раньше, чем Cache-Control