分为强缓存和协商缓存,根据Cache-Control字段来实现
Cache-Control字段常见的值如下:
- no-store-禁止缓存
- public-表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存,即使是通常不可缓存的内容
- private-表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它
- no-cache-走协商缓存策略
- max-age-缓存有效时间
- 状态码:304,Not Modified
- 标志1,资源的修改时间,请求头If-Modified-Since/返回头Last-Modified
- 缺点:服务端的时间不准确;频繁修改,例如1秒修改文件100次
- 标志2,资源校验码(优先级高),请求头If-None-Match/返回头Etag
- 缺点:大文件可能不适用
- 第一次缓存生效从磁盘中读取缓存数据,再次请求时从内存中读取缓存数据,内存的读取速度远远高于磁盘