浏览器缓存(http缓存)

2021-09-06  本文已影响0人  糖糖不加糖_
第一次发起请求 协商缓存请求图

浏览器缓存有两种:强制缓存和协商缓存

浏览器缓存机制
强制缓存(客户端判断规则)

向浏览器缓存中查找请求结果,根据【缓存规则】决定是否使用该结果。

协商缓存(服务器端判断规则)

强制缓存失效后,携带缓存标识请求服务器,服务器根据缓存标识判断是否使用缓存

浏览器缓存规则

当浏览器向服务器发送请求的时候,服务器会将缓存规则放入HTTP响应的报文的HTTP头中和请求结果一起返回给浏览器(ps:下文说的时间点均为类似:Sat Aug 14 2021 11:01:52,秒级)

强制缓存的缓存规则

两个字段:Expires和Cache-Control,优先级:Cache-Control > Expires,客户端比较时间

Expires:HTTP/1.0,返回值为【到期时间点】,再次请求,客户端的时间< Expires,直接用缓存(ps:客户端与服务器端时间可能存在误差,出问题)

Cache-Control:HTTP/1.1,有以下字段

协商缓存的缓存规则

Last-Modified / If-Modified-Since 和 Etag / If-None-Match,优先级Etag > Last-Modified,服务器比较时间
Last-Modified(服务端返回客户端) / If-Modified-Since(客户端传入服务端):两个值相同,表示:资源文件在服务器最后被修改的时间【时间点】。

Etag(服务端返回客户端) / If-None-Match(客户端传入服务端),两个值相同,为当前资源文件的一个唯一标识(由服务器生成)


Etag什么时候用
雅虎禁用了Etag:因为ETag的值和服务器有关,那么对于同样的文件,可能下次请求的时候是发给不同的服务器,结果也会重新发送数据,所以就会影响网页加载速度,增加服务器的压力(但Last-Modified也与服务器有关)
主要解决的问题:

浏览器的缓存存放位置

浏览器的每个tab都是一个进程
两个缓存的地方from memory cache(内存缓存)from disk cache(硬盘缓存),读取顺序为memory > disk

内存缓存memory
硬盘缓存disk
上一篇 下一篇

猜你喜欢

热点阅读