HTTP缓存——304与200 from cache

2018-07-31  本文已影响0人  wclimb

HTTP与缓存相关的字段

1. 通用字段

字段名称 释义
Cache-Control 控制缓存具体的行为
Pragma HTTP1.0时的遗留字段,当值为"no-cache"时强制验证缓存
Date 创建报文的日期时间(启发式缓存阶段所用)

2. response字段

字段名称 释义
ETag 服务器生成资源的唯一标识
Vary 代理服务器缓存的管理信息
Age 资源在缓存代理中存贮的时长(取决于max-age和s-maxage的大小)

3. request字段

字段名称 释义
If-Match 条件请求,携带上一次请求中资源的ETag,服务器根据这个字段判断文件是否有新的修改
If-None-Match 和If-Match作用相反,服务器根据这个字段判断文件是否有新的修改
If-Modified-Since 比较资源前后两次访问最后的修改时间是否一致
If-Unmodified-Since 比较资源前后两次访问最后的修改时间是否一致

4. 实体字段

字段名称 释义
Expires 告知客户端资源缓存失效的绝对时间
Last-Modified 资源最后一次修改的时间

协商缓存(304)

If-modified-Since/Last-Modified

if-modified-since:Wed, 31 May 2017 03:21:09 GMT
if-none-match:"42DD5684635105372FE7720E3B39B96A"

If-None-Match/Etag

etag:"42DD5684635105372FE7720E3B39B96A"
last-modified:Wed, 31 May 2017 03:21:09 GMT

请求头last-modified的日期与响应头的last-modified一致
请求头if-none-match的hash与响应头的etag一致
所用会返回Status Code: 304

强缓存(200 from cache)

区别

  1. 直接点击链接访问
  2. 输入网址按回车访问
  3. 二维码扫描
  1. 刷新页面时触发
  2. 设置了长缓存、但Entity Tags没有移除时触发

流程图

流程图

GitHub:wclimb

上一篇 下一篇

猜你喜欢

热点阅读