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

时间:2011-04-27 05:44:26

标签: http-headers cache-control

ExpiresCache-Control标题之间有什么区别?

7 个答案:

答案 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完全相同。