В чем разница между заголовками Expires и Cache-Control? - PullRequest
165 голосов
/ 27 апреля 2011

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

Ответы [ 7 ]

120 голосов
/ 28 апреля 2011

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

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

32 голосов
/ 27 января 2014

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

16 голосов
/ 11 июля 2015

Согласно этой статье разработчиков Google, Кэширование HTTP :

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

4 голосов
/ 23 июля 2017

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.

4 голосов
/ 17 апреля 2015

У разработчика Heroku есть отличная статья на эту тему.

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

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

0 голосов
/ 09 марта 2019

За исключением приватных / публичных опций CC, я не вижу никакой разницы. При использовании Expires типа «доступ плюс 1 год / месяц / неделя / день», он работает точно так же, как и CC.

0 голосов
/ 19 октября 2017

Если вы все еще заинтересованы, я оставляю эту рекомендацию непосредственно от мальчиков Google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Они предпочитают Expires раньше, чем Cache-Control

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...