http缓存策略 - 协商缓存(对比缓存)
- 服务器端缓存策略(即判断是否可以缓存)
- 服务端判断一个资源是否被缓存
- 服务器判断客户端资源,是否和服务端资源一样
- 如果一致则返回304(服务器告诉客户端资源没有被修改,可以直接用本地缓存),否则返回200和最新的资源
- 浏览器再次访问服务器时,会带着资源标识
- 服务器端每次返回的除了资源,还有资源标识
- 资源标识
- 在Response Headers中,有两种
- Last-Modified资源的最后修改时间(服务器返回时通过Last-Modified,客户端向服务器发起请求时,带的是If-Modified-Since)
- Etag资源的唯一标识(一个字符串,类似人类的指纹,根据变动变化,就是重复生成,但是内容不变,Etag也不变)(服务器返回时通过Etag,客户端向服务器发起请求时,带的是If-None-Match)
- Last-Modified和Etag可以共存
- 优先使用Etag,Last-Modified只能精确到秒级
- 如果资源被重复生成,而内容不变,则Etag更精确
- 在Response Headers中,有两种