HTTP 缓存主要是浏览器端缓存 GET
方式的资源文件, 分为强缓存和协商缓存
- 强缓存: 本地缓存未过期 (根据
Cache-Control
的max-age
), 直接读取本地缓存 (本地缓存又分为内存缓存memory cache
和硬盘缓存disk cache
), 不使用网络 - 协商缓存: 本地缓存过期, 携带
If-Non-Match
请求头, 值取自响应头ETag
, 请求服务器 , 服务器比对ETag
后, 如果未修改, 那么返回状态码Status Code 304 Not Modified
无需返回响应体; 如果已修改, 那么返回状态码200
和响应体. 浏览器收到响应后, 刷新本地文件的过期时间
内存缓存 memory cache
和硬盘缓存 disk cache
区别
内存缓存: 速度优于硬盘缓存, 生命周期跟随浏览器标签页创建/销毁
硬盘缓存: 速度慢于内存缓存, 不过 tab 关闭后再打开, 仍然可以使用硬盘缓存, 而不可以使用内存缓存