浏览器缓存策略

 我来答
聪慧且健美灬牡蛎5360
2022-07-07 · TA获得超过1526个赞
知道小有建树答主
回答量:1850
采纳率:100%
帮助的人:115万
展开全部

浏览器缓存策略分为两种 强缓存 (本地缓存) 和 协商缓存 (弱缓存)。
浏览器在发请求前,先检查强缓存,若没有需要的内容(未命中),则发起请求判断是否需要用弱缓存。

强缓存 是不发起请求,直接使用缓存内的内容的。浏览器将 js 、 css 、 image 、 font-family 等存到内存(存小文件)或者磁盘(存大文件)中,下次用户再访问的时候就从内存中取,以便提升性能。
协商缓存 需要往后台发请求, 通过判断来决定是使用协商缓存。如果请求内容没发生变化,则请求返回304(服务器收到请求,但内容无变化),浏览器就用缓存内的内容。

如果服务器返回的响应标头中包含 Expires (时间戳),那么客户端发起请求的时间在 Expires 之前的话,就触发强缓存。

服务器在上一次响应请求时,返回一个带 Last-Modified 的响应头,值为一个时间戳,表示该资源最后一次在服务器修改的时间。当客户端再一次请求这个资源的时候, 请求头就会带上 If-Modified-Since ,值为上次服务器发来的 Last-Modified , 服务器收到后,就和该资源最后修改时间比对, 没变化就返回304, 触发协商缓存。
弊端 : 时间间隔最小为1s,如果请求的资源在1s内发生了改变,是可能会触发协商缓存的, 导致无法获取到最新的资源。

为解决间隔最小1s的问题, If-None-Match 和 Etag 就诞生了。 Etag 是由服务器生成的, 是每个资源的唯一标识字符串, 随资源变化而改变。 判断过程和http1.0的一致,请求的时候携带 If-None-Match ,然后服务器比较这两个值,没变化就返回304, 触发协商缓存。
弊端 : 占用服务器资源较多, 虽然准确度高,但是性能上不如 Last-Modified & If-Modified-Since 的方法。不过实际的影响不会很大, 基本上可以忽略不计。

即便我们没有配置缓存策略,浏览器也会采用自己的算法来缓存资源。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柚鸥ASO
2024-03-16 广告
安卓ASO优化方法包括以下几点:1. 应用商店优化(ASO):通过优化应用名称、关键词、描述、图标、下载量、评价等提升应用在应用商店的排名和曝光。2. 搜索引擎优化(SEO):通过优化应用内容、结构、网站速度、关键词等提升应用在搜索引擎的排... 点击进入详情页
本回答由柚鸥ASO提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式