过期和缓存控制头之间的区别是什么?


当前回答

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

HTML缓存控制是一个非常类似的问题,有一个缓存教程的很好的链接,应该可以回答你的大部分问题(例如,http://www.mnot.net/cache_docs/#EXPIRES)。总而言之,当你需要更多地控制缓存如何完成时,建议将Expires用于静态资源,如图像和Cache-Control。

其他回答

除了CC的private/public选项,我看不出有什么区别。当使用过期,如“访问加1年/月/周/天”,它的工作方式与CC完全相同。

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

HTML缓存控制是一个非常类似的问题,有一个缓存教程的很好的链接,应该可以回答你的大部分问题(例如,http://www.mnot.net/cache_docs/#EXPIRES)。总而言之,当你需要更多地控制缓存如何完成时,建议将Expires用于静态资源,如图像和Cache-Control。

如果你仍然感兴趣,我直接从谷歌的男孩们那里留下这个建议。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 他们更喜欢“过期前”而不是“缓存控制”

如果你使用的是CDN(云交付网络),我建议使用缓存控制,最大老化时间以秒为单位。例如Cache-Control: max-age=604800。 这可以防止源服务器的请求峰值:“Expires Wed, 30 Oct 20xx 04:37:07 GMT”所有浏览器将同时请求您。

根据谷歌开发人员的文章,HTTP缓存:

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