俗称强缓存和弱缓存

HTTP缓存

65.缓存与内容协商 - 图1

这三个文件一小时呢都不会重复请求,从内存或者文件中取得缓存

Cache-Control

public 公开内容
max-age = 3600 缓存时间
must-revalidate 对过期的缓存必须重新校验
这个校验过程也叫内容协商也就是弱缓存

HTTP内容协商

缓存过期后是否还可以重用
65.缓存与内容协商 - 图2
通过ETag判断文件是否还能继续使用


缓存 内容协商
HTTP1.1 Cache-Control:max-age=3600
Etag: ABC 响应
请求头: If-Name-Match : ABC
响应: 304+空内容/200+新内容
HTTP1.0 Expire:时间点A
Last-Modified:时间点B
请求头:If-Modified-Since:时间点B
响应: 304+空内容/200+新内容

用户电脑时间更改不稳定
时间精确到秒,不准确

禁用缓存

不加Cache-Control浏览器还会缓存么?

200 300 多选
203 非权威信息 301 永久重定向 302 临时重定向
206 部分内容 410已迁移

服务器禁用缓存

**Cache-Control:max-age=0,must-revalidate** 等同于
**Cache-Control:no-cache** 不能缓存但是可以内容协商

**Cache-Control:no-store** 不能缓存也不能内容协商

浏览器禁用缓存

  1. get/users?_=随机数 请求最新资源
  2. Cache-Control:no-cache;no-store;max-age=0