Expires和Cache-Control标头之间有什么区别?

问题描述 投票:161回答:7

ExpiresCache-Control标题有什么区别?

http-headers cache-control
7个回答
121
投票

Cache-Control是在HTTP / 1.1中引入的,提供了比Expires更多的选项。它们可用于完成相同的事情,但Expires的数据值是HTTP日期,而Cache-Control max-age允许您指定相对的时间量,因此您可以指定“请求页面后X小时”。

HTML Cache control是一个非常相似的问题,与缓存教程有很好的联系,可以回答你的大多数问题(例如,http://www.mnot.net/cache_docs/#EXPIRES)。总而言之,当您需要更多地控制缓存的方式时,建议将Expires用于静态资源,如images和Cache-Control


32
投票

如果您使用的是CDN(云交付网络),我建议使用Cache-Control,最长时间为秒。例如,Cache-Control:max-age = 604800。这可以防止请求峰值到您的原始服务器:使用“Expires Wed,30 Oct 20xx 04:37:07 GMT”,所有浏览器都会同时请求您。


16
投票

根据谷歌开发者的这篇文章,HTTP Caching

Cache-Control标头被定义为HTTP / 1.1规范的一部分,并取代用于定义响应缓存策略的先前标头(例如Expires)。所有现代浏览器都支持Cache-Control,因此这就是我们所需要的。


4
投票

Heroku devcenter在这个问题上有一个excellent article

引用它,

当Cache-Control标头打开客户端缓存并设置资源的max-age时,Expires标头用于指定资源不再有效的特定时间点。


4
投票

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字段。


0
投票

如果您仍然感兴趣,我会直接从Google的男生那里留下这个推荐。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching他们更喜欢Expires而不是Cache-Control


0
投票

除了CC的私人/公共选择,我看不出任何区别。当使用“访问加1年/月/周/日”等过期时,它的工作方式与CC完全相同。

© www.soinside.com 2019 - 2024. All rights reserved.