HTTP缓存,也即浏览器缓存。之所以有缓存技术的存在,是为了通过缓存手段来达到快速加载网站中的资源(图片、css、js、html等文件资源),从而达到网页更快的渲染展现给用户。缓存策略如下:
- 网站首次加载,此时浏览器缓存中不存在该网站的任何资源和缓存规则。会向目标服务器建立连接,请求对应的资源。资源请求后,会解析响应头对应缓存字段,将对应资源和缓存规则进行一个缓存。
- 网站第二次及后面的资源请求,此时浏览器缓存中已存在该网站的资源和缓存规则。在请求对应资源时,会解析对应的缓存规则,先从强缓存解析。
- HTTP1.0时,强缓存字段标识是响应头中的 Expires(一个时间) ,如果客户端时间小于 Expires ,表示该资源未过期,可用,否则已过期,不可用。HTTP1.1时,使用 Cache-Control 替代了 Expires,原因是客户端时间如果不正确,就会造成错误缓存。Cache-Control:max-age=900。表示该资源900秒后过期,如果在900秒内再次请求该资源,就命中强缓存,否则,强缓存未命中。走协商缓存。
- 强缓存未命中,走协商缓存,协商缓存看响应头中的 Last-Modified(资源的最后修改时间) 和 Etag(缓存标识)。在HTTP资源请求时会携带这俩字段,服务器判断该资源缓存是否还有效,如果有效,就使用缓存,此时的http状态码为304,表示协商缓存生效。如果无效,服务器返回对应资源,浏览器拿到后并更新,此时的http状态码为200。
通过资源请求进分析缓存策略
第一次加载
强缓存命中