基于http协议讲解缓存头Cache-Control在服务中的应用

先思考两个问题?

  • 在页面中引入静态资源文件,为什么静态资源文件改变后,再次发起请求还是之前的内容,没有变化呢?
  • 在使用webpack等一些打包工具时,为什么要加上一串hash码?

缓存头Cache-Control的一些特性

可缓存性

  • public http经过的任何地方都可以进行缓存
  • private 只有发起请求的这个浏览器才可以进行缓存
  • no-cache 任何一个节点都不可以缓存

到期

  • max-age= 设置缓存到多少秒过期
  • s-maxage= 会代替max-age,只有在代理服务器才会生效
  • max-stale= 是发起请求方主动带起的一个头,是代表即便缓存过期,但是在max-stale这个时间内还可以使用过期的缓存,而不需要愿服务器请求新的内容

重新验证

  • must-revalidate 如果max-age设置的内容过期,必须要向服务器请求重新获取数据验证内容是否过期
  • proxy-revalidate 主要用在缓存服务器,指定缓存服务器在过期后重新从原服务器获取,不能从本地获取

其它

  • no-store 本地和代理服务器都不可以存储这个缓存,永远都要从服务器拿body新的内容使用
  • no-transform 主要用于proxy服务器,告诉代理服务器不要随意改动返回的内容

示例

  • cache-control.html

cache-control

-->


分享到:


相關文章: