Expires和Cache-Control头文件之间有什么区别?
Expires
Cache-Control
Cache-Control是在HTTP/1.1中引入的,它提供了比Expires更多的选项。它们可以用来完成同样的事情,但是Expires的数据值是一个HTTP日期,而Cache-Control max-age让你指定一个相对的时间量,所以你可以指定“页面被请求后X小时”。
缓存控制是一个非常类似的问题,并且有一个缓存教程的很好的链接,应该可以回答你的大部分问题(例如,http://www.mnot.net/cache_docs/#EXPIRES)。总而言之,当你需要更多地控制如何缓存时,建议将Expires用于静态资源,如图像和Cache-Control。
Heroku devcenter在这个主题上有一个优秀的文章。
引用其中的话,
当Cache-Control头打开客户端缓存并设置资源的max-age时,Expires头用于指定资源不再有效的特定时间点。
根据谷歌开发者文章,HTTP缓存:
缓存控制头被定义为HTTP/1.1规范的一部分 并取代以前用于定义响应的报头(例如Expires) 缓存策略。因此,所有现代浏览器都支持Cache-Control 这就是我们所需要的
cache - control是在HTTP/1.1中定义的,它告诉从服务器到客户端的所有缓存机制是否可以缓存这个对象。它以秒为单位:Cache-Control: max-age=3600。
Cache-Control: max-age=3600
Expires报头字段给出了响应过期的日期/时间。Expires值是一个http日期时间戳:Expires: Tue, 18 Jul 2017 16:07:23 GMT。
Expires: Tue, 18 Jul 2017 16:07:23 GMT
如果响应包含带有max-age指令的Cache-Control字段,收件人必须忽略Expires字段。
max-age
除了CC的private/public选项,我看不出有什么区别。当使用过期,如“访问加1年/月/周/天”,它的工作方式与CC完全相同。