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


Answers:


130

Cache-Control是HTTP / 1.1中引入的,并且提供了比的更多选项Expires。它们可以用于完成相同的操作,但是的数据值Expires是HTTP日期,而Cache-Controlmax-age允许您指定相对的时间量,因此可以指定“请求页面后X个小时”。

HTML缓存控件是一个非常相似的问题,并且具有指向缓存教程的良好链接,该教程应回答您的大多数问题(例如,http : //www.mnot.net/cache_docs/#EXPIRES)。总而言之,Expires建议将其用于图像等静态资源,以及Cache-Control何时需要对缓存的完成方式进行更多控制的情况。


8
值得一提的是,所有浏览器都将使用缓存控制,但同时指定两个标头也很有用,以防万一有旧的代理服务器。
Nacho Coloma 2012年

3
使用服务redbot.org(也是Mark Nottingham的人,他写了上面答案中引用的缓存文章)来检查缓存头的使用是否正确。
daxim 2013年

35
此外:“当同时存在Cache-Control和Expires时,Cache-Control优先。” - mnot.net/cache_docs/
KFunk

35

如果您使用的是CDN(云交付网络),则建议使用Cache-Control,其最长使用时间以秒为单位。例如Cache-Control:max-age = 604800。这样可以防止对您的原始服务器发出请求高峰:使用“ Expires Wed,30 Oct 20xx 04:37:07 GMT”,所有浏览器都会同时请求您。


22
Apache(可能还有许多服务器)通常使用请求文件的时间+您指定的超时来设置到期日期。由于此日期使用秒,因此您的情况极不可能发生,并且行为与相同cache-control。所以我不明白为什么使用时会出现请求高峰Expires:
hilnius 2015年

19

根据此Google Developers文章HTTP Caching

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


所有现代浏览器不仅支持它,而且还应按照规范中的要求:“如果响应中同时包含Expires标头和max-age指令,则即使Expires,max-age指令也会覆盖Expires标头标头更具限制性” [ w3.org/Protocols/rfc2616/rfc2616-sec14.html]
rosell.dk

8

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字段。


4

Heroku devcenter 在此主题上有出色的文章

引用它,

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


0

除了CC的私有/公共选项外,我看不到任何区别。当使用“访问权限加上1年/月/周/日”之类的Expires时,其工作方式与CC完全相同。


您是否愿意解释不赞成票?我在Chrome,Safari和Firefox中进行了一些广泛的测试。缓存控制具有一些选项,这些选项在使用到期时不可用,但出于所有实际目的,两者的工作方式完全相同。
罗布

-1

如果您仍然有兴趣,我会直接由Google的男生留下此建议。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 与Cache-Control相比,他们更喜欢Expires before


您确定他们更喜欢Expires而不是Cache-Control吗?我读到重写是相反的,至少对于Firefox。developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
Ecker00 '18

当前,该页面上提到“已弃用。此页面是针对PageSpeed Insights API的版本4编写的,该版本已弃用,并将于2019年5月关闭。版本5是最新版本,并提供了Chrome用户体验中的真实数据来自Lighthouse的报告和实验室数据。”
Jochem Schulenklopper
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.