Expires和Cache-Control头文件有什么区别?

ExpiresCache-Control头文件有什么区别?

Cache-Control是在HTTP / 1.1中引入的,并提供比Expires更多的选项。 它们可以用来完成同样的事情,但Expires的数据值是HTTPdate,而Cache-Control max-age可以让你指定一个相对的时间量,所以你可以指定“请求页面后的X小时”。

HTMLcaching控件是一个非常类似的问题,并且有一个很好的链接,可以caching大部分问题的caching教程(例如http://www.mnot.net/cache_docs/#EXPIRES )。 总而言之,当你需要更多的控制Cache-Control时,推荐使用Expires这样的静态资源,比如图像和Cache-Control

如果您正在使用CDN(云交付networking),我build议使用具有最大使用时间(以秒为单位)的caching控制。 例如Cache-Control:max-age = 604800。 这样可以防止请求到达您的原始服务器:所有浏览器都会同时要求您提供“到期周三,10月30日20xx 04:37:07 GMT”。

根据Google开发者的这篇文章, HTTPcaching :

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

Heroku devcenter在这个问题上有一篇很好的文章 。

引用它,

当Cache-Control头打开客户端caching并设置资源的最大时限时,Expires头用于指定资源不再有效的特定时间点。

caching控制是在HTTP / 1.1中定义的,它告诉服务器之间的所有caching机制是否可以caching这个对象。 它以秒计量: Cache-Control: max-age=3600

Expires标题字段给出了响应被认为是陈旧的date/时间。 Expires值是HTTPdate时间戳: Expires: Tue, 18 Jul 2017 16:07:23 GMT

如果响应包含带有max-age指令的Cache-Control字段,则收件人必须忽略Expires字段。

如果你有兴趣呢。 我直接从谷歌的男孩离开这个build议。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching他们宁愿过期之前比caching控制;