HTTP缓存相关内容

1.Cache-Control(推荐)

设置时间长度

Cache-Control max-age=时间长度

  • Cache-Control max-age=30
    30秒内请求相同的URL 会阻拦 直接用上一次的缓存内容
  • Disable cache 开启则禁用缓存
  • 首页不设置缓存

    服务器更新数据客户端接受不到

    策略
  • 入口HTML处将URL改变—每次更新时修改URL加 查询参数,随机数或者MD5
  • Cache-Control可以让浏览器一段时间不访问服务器 直接用本地硬盘或内存作为响应
  • 浏览器会给一定内存放置缓存 如满会删除之前的
    Cache-Control的其他值
  • max-age,表示当前资源的有效时间,单位为秒。
  • no-cache表示不使用 Cache-Control的缓存控制方式做前置验证,而是使用 Etag 或者Last-Modified字段来控制缓存
  • no-store ,真正的不缓存任何东西。浏览器会直接向服务器请求原始文件,并且请求中不附带 Etag 参数(服务器认为是新请求)。

2.Expires(慎用)

设置时间点

1
response.setHeader('Expires', 'Wed, 28 Nov 2018 05:31:09 GMT')

几分几秒过期指本地时间,但如果本地时间点错误—所有缓存会全部清空

3.Cache-Control和ETag的区别

  • Cache-Control: 在设置的时间长度内会使用缓存,不需要发HTTP请求询问服务器
  • ETag: 需要发HTTP请求其中带有If-None-Match请求头,里面存的是上一次响应头的Etag内容(文件的MD5值)服务器收到请求后会提取if-none-match值,去和该资源的MD5进行对比,如果相同则返回缓存内容(返回状态码304 有请求,有响应,但是响应没有第四部分),否则返回请求资源内容
    优先使用Cache-Control 直接不请求