浏览器分强缓存和协商缓存

160 阅读1分钟

浏览器分强缓存和协商缓存

1、强缓存

是利用http的返回头中的Expires或者Cache-Control两个字段来控制的,用来表示资源的缓存时间。Expires缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点。Expires=max-age+请求时间,需要和Last-modified结合使用。cache-control的优先级更高。Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。 Cache-Control是一个相对时间,例如Cache-Control:3600,代表着资源的有效期是3600秒。由于是相对时间,并且都是与客户端时间比较,所以服务器与客户端时间偏差也不会导致问题。 Cache-Control与Expires可以在服务端配置同时启用,同时启用的时候 Cache-Control 优先级高。

2、协商缓存

304在第一次请求时候, 返回状态码200, 和响应头中返回cache-Control, 控制缓存使用的时间/方式(私有缓存和共享缓存), 在第二次发起请求时, 先查看max-age如果过期了, 在请求头设置If-None-Match等于刚刚Etag的值, 去后台对比, 如果etag值相同证明后端没更新, 所以返回304状态, 前端提取本地的缓存继续使用。