Expires和Cache-Control头文件有什么区别?
Expires
和Cache-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控制;