Ответы:
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
когда вам нужно больше контроля над тем, как осуществляется кэширование.
Если вы используете CDN (Cloud Delivery Network), я рекомендую использовать Cache-Control с максимальным сроком хранения в секундах. Например, Cache-Control: max-age = 604800. Это предотвращает пики запросов к вашему серверу origin: с «Expires Wed, 30 Oct 20xx 04:37:07 GMT» все браузеры будут запрашивать вас одновременно.
cache-control
. Поэтому я не понимаю, почему при использовании будут пики запросовExpires:
Согласно этой статье Google Developers, HTTP Caching :
Заголовок Cache-Control был определен как часть спецификации HTTP / 1.1 и заменяет предыдущие заголовки (например, Expires), используемые для определения политик кэширования ответов. Все современные браузеры поддерживают Cache-Control, поэтому это все, что нам нужно.
Cache-Control был определен в HTTP / 1.1, сообщает всем механизмам кэширования от сервера клиенту, могут ли они кэшировать этот объект. Она измеряется в секундах: Cache-Control: max-age=3600
.
В Expires
поле заголовка указывается дата / время, после которого ответ считается устаревшим. Истекает значение является HTTP-дата метки времени: Expires: Tue, 18 Jul 2017 16:07:23 GMT
.
Если ответ содержит Cache-Control
поле с max-age
директивой, получатель ДОЛЖЕН игнорировать это Expires
поле.
Heroku Devcenter имеет отличную статью на эту тему.
Цитируя это,
В то время как заголовок Cache-Control включает кэширование на стороне клиента и задает максимальный возраст ресурса, заголовок Expires используется для указания определенного момента времени, когда ресурс больше не является допустимым.
За исключением приватных / публичных опций CC, я не вижу никакой разницы. При использовании Expires типа «доступ плюс 1 год / месяц / неделя / день» он работает точно так же, как и CC.
Если вы все еще заинтересованы, я оставляю эту рекомендацию непосредственно от мальчиков Google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Они предпочитают срок действия раньше, чем Cache-Control