浏览器缓存

297 阅读1分钟

1.浏览器缓存

分为强制缓存和协商缓存

2.强制缓存

1.expires,服务器返回数据时返回的时间,当浏览器再次发送请求时,如果发送请求的时间小于expires的时间,则不需要请求服务器,直接读取缓存
2.cache-control,有五个值public、private、no-cache、no-store、max-age
public=>缓存所有文件
private=>缓存浏览器文件
no-cache=>会走协商缓存
no-store=>所有文件都不缓存
max-age=>值为number,及在number时间内会缓存,超过时间再次请求服务器
3.expires弊端,当本地发送请求时间和服务器时间出现差异情况,因为本地时间可以自动修改,包括跨时区的问题的存在,导致expires存在漏洞 4.cache-control优先级大于expires

image.png

3.协商缓存

1.协商缓存又称为弱缓存,当请求报文中的cache-control:no-cache的情况下会走协商缓存
2.last-modified/if-modified-since:
原理:服务器返回成功后会返回文件最后修改时间保存到last-modified,当浏览器再次发送请求时,请求头上if-modified-since会访问服务器,在此时间之后,访问的文件数据是否发生修改,如果没有命中,则会返回304状态,读取缓存,否则重新发送请求
3.etag/if-none-match:
原理:同last-modified/if-modified-since原理一致,但是etag返回的是服务器返回的一个标识,再次请求是if-none-match发送到服务器,如果没有修改,则命中,反之,重新请求

4.流程图

image.png