其他分享
首页 > 其他分享> > 浏览器缓存

浏览器缓存

作者:互联网

1、基本介绍

浏览器缓存是指浏览器会存储用户最近请求过的资源,当用户再次请求同一资源时,浏览器可以直接从本地读取

这样,不仅可以提高浏览器的加载速度,也能减轻服务器的负载压力,可以说是一举两得

具体而言,浏览器的缓存策略分为两种,一种是强缓存(又称本地缓存),一种是弱缓存(又称协商缓存)

它们的行为会根据响应头和请求头的特定字段决定

2、本地缓存

本地缓存:当一个请求发生时,浏览器自己决定是否从缓存中读取数据

在浏览器第一次请求资源时,服务器会返回资源,并在响应中设置 expirescache-control 字段

然后浏览器会把这些信息都缓存下来,当再次请求资源时,浏览器先不向服务器发送请求

而是根据该资源的 expirescache-control 字段判断缓存的资源是否已经失效

如果缓存没有失效,那么直接读取缓存拿到资源

注意,由于 exprise 使用的是绝对时间,如果服务端和客户端的系统时间相差较大,容易出现缓存混乱

exprisecache-control 可以同时设置,在同时设置的情况下 cache-control 的优先级高于 exprise

3、协商缓存

协商缓存:当一个请求发生时,由服务器来决定是否从缓存中读取数据

在浏览器第一次请求资源时,服务器会返回资源,并在响应中设置 last-modifiedetag 字段

然后浏览器会把这些信息都缓存下来,当再次请求资源时,浏览器会发送一个 Conditional GET 请求

并在请求中带上 if-modified-sinceif-none-match 字段

服务器根据 if-modified-sinceif-none-match 字段的值判断缓存的资源是否已经失效

如果缓存没有失效,那么返回 304,但不返回资源,浏览器收到 304 后就从缓存中读取资源

如果缓存已经失效,那么返回 200,并且返回资源,浏览器收到 200 后它就使用返回的资源

注意哦,last-modifiedif-modified-since 是成对出现的,etagif-none-match 是成对出现的

last-modifiedetag 可以同时设置,在同时设置的情况下 etag 的优先级高于 last-modified

4、完整过程

在实际使用中,本地缓存和协商缓存一般都会同时使用,一个完整的过程如下:

5、用户行为

用户在浏览器上进行的操作对浏览器缓存的使用方式有很大的影响

比如,在地址栏输入链接进入页面、通过前进后退进入页面等的行为都会同时启用强缓存和弱缓存

但普通刷新 ( F5 ) 会忽略强缓存而启用弱缓存,而强制刷新 ( Ctrl + F5 ) 会同时忽略强缓存和弱缓存

标签:缓存,last,modified,etag,浏览器,资源
来源: https://blog.csdn.net/wsmrzx/article/details/104862572