Expires
和Cache-Control
标题之间有什么区别?
答案 0 :(得分:118)
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
。
答案 1 :(得分:30)
如果您使用的是CDN(云交付网络),我建议使用Cache-Control,最长时间为秒。例如,Cache-Control:max-age = 604800。 这可以防止请求峰值到您的源服务器:使用“Expires Wed,30 Oct 20xx 04:37:07 GMT”,所有浏览器都会同时请求您。
答案 2 :(得分:16)
根据Google开发者的这篇文章,HTTP Caching:
Cache-Control标头被定义为HTTP / 1.1规范的一部分 并取代用于定义响应的先前标题(例如Expires) 缓存策略。因此,所有现代浏览器都支持Cache-Control 这就是我们所需要的一切。
答案 3 :(得分:4)
Heroku devcenter对此主题有excellent article。
引用它,
当Cache-Control标头打开客户端缓存并设置资源的max-age时,Expires标头用于指定资源不再有效的特定时间点。
答案 4 :(得分: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
字段。
答案 5 :(得分:0)
如果您仍然感兴趣,我会直接从Google的男生那里留下这个推荐。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 他们更喜欢Expires before Cache-Control
答案 6 :(得分:0)
除了CC的私有/公共选项外,我看不到任何区别。当使用“访问权限加上1年/月/周/日”之类的Expires时,其工作方式与CC完全相同。