浏览器缓存策略

184 阅读2分钟

强缓存

所有缓存策略都是在header头部设置的,强缓存在缓存有效期内,浏览器直接读取本地资源,返回200状态码,
Expires HTTP 1.0使用,缓存失效时间,如果本地时间是错的,就会出现问题,在现在的HTTP1.1中,换成了max-age,
cashe-control 设置缓存策略,多个指令用逗号分隔,指令如下:
max-age 强缓存有效时间 单位为秒 max-age=2000,
no-cashe 使用缓存协商
no-strore 禁止浏览器缓存
public 可以被任何对象缓存(客户端,代理服务器等),即使是不可缓存的内容(例如,没有max-age或者Expires消息头)
private 只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存)

协商缓存

在使用缓存之前先和服务器验证,如果缓存命中,服务器告诉浏览器使用本地缓存,否则,返回最新资源,浏览器收到后更新本地缓存
1 通过资源最后更新时间验证,是HTTP 1.0的产物,精确到秒,秒之内可能发生错误
Last-Modified 服务器返回资源的最新更新时间
if-Modified-Since 下次请求时,浏览器把本地资源的最新更新时间发送给服务器,服务器进行比较,如果最近更新时间没变,服务器就通知浏览器使用本地缓存
2 通过资源的唯一标识符进行验证,HTTP 1.1的产物,可以代替时间验证,优先级高于时间验证
Etag 服务器根据内容生成唯一字符串标识符
if-None-Match 下次请求,浏览器把本地资源的唯一标识符传给服务器,服务器进行验证,如果标识符不变,通知浏览器使用本地资源