Expires
和Cache-Control
标题有什么区别?Expires和Cache-Control头文件有什么区别?
回答
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
。
如果您使用的是CDN(云传输网络),我建议您使用具有最大使用时间(以秒为单位)的缓存控制。例如Cache-Control:max-age = 604800。 这样可以防止您的原始服务器发出请求峰值:使用“Expires Wed,20xx 20xx 04:37:07 GMT”时,所有浏览器都会同时请求您。
Apache(也可能是许多服务器)通常使用请求文件的时间来设置到期日期+您指定的超时。由于这个日期是使用秒,所以你的场景是不太可能的,并且行为与'''cache-control'''相同。所以我不明白为什么在使用'Expires:'''时会出现请求峰值 – hilnius 2015-05-27 12:20:23
Heroku devcenter在这个问题上有一个excellent article。
从它引用,
虽然Cache-Control头开启客户端缓存,并设置一个资源的最大年龄,报头被用于指定在时间上的资源的特定点的过期不再有效。
根据该谷歌开发文章,HTTP Caching:
Cache-Control头被定义为HTTP/1.1规范 的一部分,并取代先前的报头(例如到期)用来定义响应 缓存政策。所有现代浏览器都支持Cache-Control,因此我们只需要这一点就可以使用 。
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
字段。
如果你还有兴趣, 我离开这个建议直接从谷歌的男孩。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 他们喜欢到期之前比的Cache-Control
- 1. 有什么区别Expires和Cache-control:max-age?
- 2. mach头和fat头有什么区别?
- 3. 运行时头文件和跳板头文件有什么区别?
- 4. HTTP参数和HTTP头文件有什么区别?
- 5. C++中的iostream,stdio.h和conio.h头文件有什么区别?
- 6. .so和.lo文件有什么区别?
- 7. io_submit和O_ASYNC文件有什么区别
- 8. .bin和.dat文件有什么区别?
- 9. .sqlite和.db文件有什么区别?
- 10. apklib和jar文件有什么区别?
- 11. XIB和NIB文件有什么区别?
- 12. NSUserDefaults和.plist文件有什么区别
- 13. .class和.dex文件有什么区别?
- 14. cmd文件中%和%%有什么区别?
- 15. .proto和.prototxt文件有什么区别
- 16. 流和文件有什么区别?
- 17. .htc和.js文件有什么区别?
- 18. .out和.log文件有什么区别
- 19. .so和.a文件有什么区别?
- 20. MDB和SDF文件有什么区别?
- 21. * .bat和* .cmd文件有什么区别?
- 22. .lib和.a文件有什么区别?
- 23. HDF5:“文件缓冲区”和“文件缓存”有什么区别?
- 24. 可可:导入头文件和导入主文件有什么区别?
- 25. .Kdb文件,.jks文件和CMS文件有什么区别?
- 26. 有什么区别`和$(Bash中有什么区别?
- 27. “码头日志”和“码头附加”有什么区别?
- 28. 码头图像和码头搜索命令有什么区别?
- 29. 不同类型的C/C++头文件有什么区别
- 30. Unity摄像头有什么区别
值得评论说,缓存控制是所有浏览器将使用什么,但同时指定报头,以防万一有在路上老代理它是有用的。 – 2012-09-17 14:33:07
使用服务http://redbot.org/(也可以通过[Mark Nottingham](http:// stackoverflow。com/users/152646/mark-nottingham),他写了上面答案中引用的缓存文章)来检查缓存头的正确用法。 – daxim 2013-03-06 14:35:24
此外: “当存在Cache-Control和Expires时,Cache-Control优先。” - [mnot.net/cache_docs/](http://www.mnot.net/cache_docs/) – KFunk 2014-08-12 23:02:44