这一篇,彻底搞懂浏览器的缓存机制

浏览器缓存策略详解 阅读详情

浏览器缓存分两种:强制缓存、协商缓存。

为什么需要缓存?

  • 通过缓存,减少网络请求的数量和体积,页面加载和渲染更快;
  • 网络请求不稳定,加剧页面渲染不稳定性,所以通过缓存,保证页面优先加载;
  • 总结下来就是,使用缓存,可以让页面的加载、渲染更快,提高用户体验度。

有哪些资源可以被缓存?

一般为静态资源,如 css、js、img 等。

强制缓存

强制缓存流程

  • 初次请求,服务器返回资源,和 Cache-Control
    若服务器认为该资源可以被缓存,在响应头(Response header)加上 Cache-Control;
  • 再次请求,浏览器通过 Cache-Control 判断所请求的资源是否有效,命中则直接从强制缓存中返回请求响应,无需跟服务器进行任何交互,直接从本地缓存获得资源。

Cache-Control 字段属性

  • no-cache
    不去判断强制缓存是否过期,而是强制进行协商缓存,直接向服务器发请求来验证缓存是否有效,若缓存未过期,使用本地缓存。

  • no-store
    表示禁止使用任何缓存。不用本地缓存,也不用任何服务器缓存策略,而是每次发请求需要服务器给予全新的响应。

  • max-age 缓存最大过期时间(秒级)

  • private只允许最终用户做缓存(响应中使用)

  • public允许中间路由、代理做缓存(响应中使用)

Expires 也是控制缓存,已被 cache-control 代替。

协商缓存

  • 属于服务端缓存策略
  • 服务端判断客户端资源,是否和服务端一样
  • 一致返回304,否则返回200和最新资源

协商缓存过程

  • 初次请求,返回资源和资源标识(ETag / Last-Modified);
  • 再次请求,请求头(Request header)带着资源标识(If-None-Match / If-Modified-Since),服务器判断资源最后修改时间和资源标识携带的值是否相同,来决定本地缓存资源是否最新,一致返回304,否则返回新资源和新的资源标识。

资源标识

  • ETag 资源的唯一标识,通过hash内容变化判断 —— If-None-Match
  • Last-Modified 通过资源最后修改时间判断 —— If-Modified-Since

请求头和响应头中的值一一对应,并且,再次请求时携带的资源标识的值即为上次响应头返回的值。

ETag 和 Last-Modified 优先级比较

  • 优先使用ETag
  • Last-Modified 只能精确到秒级,未超过 1s 的改变不会返回
  • 如果资源被重复生成,ETag可以更精准判断

为什么 ETag 更精准?

如果某个文件每隔一段时间重复生成,但内容相同,ETag hash值不变,所以资源不会返回,Last-Modified 还是会把他当作最新资源返回。ETag 可以判断文件内容是否相同,所以ETag 更精准。

【10. Wi-Fi 通用模组-小米 IoT 平台-如何进行硬件调试】 调试APP功能:从米家服务器缓存读取设备状态,等同于米家APP 的环境,开发者使用该调试器可模拟用户使用设备的实际情况,即调试米家 App 中的扩展程序。- 调试固件:调试器从固件读取设备状态,用于调试设备模组固件的某个单项功能,开发者使用该调试器可针对性地调试设备的某个功能。小爱语控测试工具:如果当前产品可被小爱语控,则可以使用该工具调试语控效果。调试APP功能(云端缓存) 阅读详情

相关推荐

火车头采集器超级详细图文使用指导(面向新手)

火车采集器·超级详细使用指导

DE的个人原创笔记 1万+

浏览器的缓存策略

强缓存:根据服务器响应头字段(Expires或Cache-Control)的过期时间,来判断是否需要发送HTTP请求或者读取缓存数据的一种策略; 协商缓存:当强缓存失效之后,浏览器在请求头中携带相应的缓存tag(Last-Modified 或 ETag)来向服务器发请求,由服务器根据这个tag,来决定是否使用缓存; Expires:即过期时间,存在于服务端返回的响应头中,告诉浏览器在这个过期时间之前可以直接从缓存里面获取数据,无需再次请求; Cache-Control:采用过期时长来控制缓存而非具体

qq_42775791的博客 1220

CNN经典论文(一)LeNet

Gradient-Based Learning Applied to Document Recognition(梯度学习在文档识别中的应用) Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner 发表时间:December 1998 期刊:Proceedings of the IEEE 影响:世界上第一个卷积神经网络 论文地址:Gradient-Based Learning Applied to Document Recognition

loveling丶的博客 3598

浏览器缓存机制

cache-control:规定一个字段max-age,这个字段规定了一段有效的时常不是规定具体时间失效,也就是服务器返回后max-age时长能用缓存,这个还可以配合其他指令比如private只能服务器缓存,代理不能缓存。no-cache跳过当前强缓存直接进行协商缓存。当浏览器再次发送请求给服务器,在请求头中也会携带这个唯一标识符,服务器会进行比对,如果不一样则重新发送数据和唯一标识符,不然就返回304,继续读取缓存中的数据。在过期时常过期和缓存标识失效时,也就是强缓存失效后,浏览器开始采取协商缓存策略。

qq_63140280的博客 1114

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2589

使用timeROC包的compare函数比较不同标记物下两个多时间AUC值是否具有统计显著性

时间依赖的接收器操作特征曲线(time-dependent receiver operating characteristic curve, time-dependent ROC curve)是评估和比较标记物在不同时间点上预测能力的重要工具。在R语言中,timeROC包提供了丰富的函数和工具,可用于分析和比较多时间点的AUC值。时间点(timepoints)表示观察的时间点,标记物1(marker1)和标记物2(marker2)分别表示在每个时间点上的预测概率。最后,我们输出比较结果。

2301_79331387的博客 921

浏览器缓存机制与缓存策略剖析

很多时候,大家倾向于将浏览器缓存简单地理解为“HTTP 缓存”。

zzz_9069的博客 1725

家人们,谁懂啊,dify又报错了:[models] Bad Request Error, 500 Server Error:Internal Server Error for url: http://

本来今天下班,坐在地铁上,一身劳累。一起上班的小兄弟儿,突然甩来一张截图:老大!dify又报错了。没办法,一到家就打开电脑,开始排查。

xiezhipu的博客 882

网络安全人才需求真的很大吗?

网安能否找到好工作,需要看你自己的技术能力。网安行业并不缺岗位,而缺的是符合岗位要求的人。而计算机其他岗位是大批符合要求的人抢岗位,所以卷的厉害。以2023年为例,全球网络安全人才规模达到了550万人,同比增长8.7%。然而,网络安全人才缺口却进一步扩大到400万人,平均增长了12.6%。亚太地区网络安全人才短缺最为严重,短缺人数同比增长23.4%。这显示出网络安全人才市场的供需矛盾较为突出。另一方面,尽管存在人才缺口,但网络安全行业也受到了裁员潮的影响。

2401_83799022的博客 1118

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互

摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3029

Raspberry Pi Pico + Inmp441麦克风(Pio模拟I2s)<2>

摘要:本文介绍了在Raspberry Pi Pico上使用PIO(Programmable I/O)接收I2S数字麦克风音频数据并保存为WAV文件的方法。项目采用双PIO状态机设计,一个生成I2S时钟信号(WS+SCK),另一个接收24位左声道数据并转换为16位格式。文章详细说明了接线方式、参数设置、WAV文件头构造、PIO汇编程序实现以及数据转换处理流程。项目在MicroPython环境下实现16kHz采样率、6秒时长录音,具有时序精确、稳定可靠的特性,并提供了进一步拓展的可能性,如双声道支持、实时频谱分

技术需要沉淀,需要碰撞。 660

彻底搞懂浏览器缓存机制,这一篇就够了

目录 **1. DNS 缓存** **2. CDN 缓存** **3. 浏览器缓存**

Sfh的博客 3910

【N32L40X】学习笔记08-定时器的基本定时功能-超时功能

【代码】【N32L40X】学习笔记08-定时器的基本定时功能-超时功能。

Car12 828

一篇文章,彻底搞懂浏览器的缓存机制

无论在工作中还是平时的学习面试过程中,HTTP缓存几乎都是我们绕不开的话题,面对这些常见的知识点,我们不应该选择逃避,而是勇于面对,去搞懂它们。 为什么需要缓存? 在任何一个前端项目中,访问服务器获取数据都是很常见的事情,如果相同的数据被重复请求了不止一次,那么多余的请求必然会浪费网络带宽,以及延迟浏览器渲染所要处理的内容,从而影响用户的使用体验。如果用户使用的是按量计费的方式访问网络,多余的请求还会隐形的增加用户的网络流量资费。因此考虑使用缓存技术对已经获取的资源进行重用,是一种提升网站性能与用户体.

Always-Learning 988

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【浏览器】彻底搞懂缓存机制篇

深入了解浏览器缓存

康宝的博客 841

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

一篇文章搞懂缓存机制,cookie和浏览器缓存~

在本篇文章中,我们会用通俗易懂的语言简要介绍cookie和浏览器存储机制,然后具体展开总结一下浏览器存储在面试中八股常考点,文章有点长,看完大概需要花费8分钟~

qq_41040989的博客 2381

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

实践这一次,彻底搞懂浏览器缓存机制

戳上方蓝字 “程序猿杂货铺” 关注我 并置顶星标!你的关注意义重大!阅读文本大概需要 12 分钟。原文 | https://dwz.cn/aIyiKa6c整理 | 程序...

程序猿杂货铺 1949

彻底搞懂浏览器缓存机制

目录 1. DNS 缓存 // 虽说跟标题关系不大,了解一下也不错 2. CDN 缓存 // 虽说跟标题关系不大,了解一下也不错 3. 浏览器缓存 // 本文将重点介绍并实践 DNS 缓存 什么是DNS 全称 Domain Name System ,即域名系统。 万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS协议运行在UDP协议之上,使用端口号53。 DNS解析 简单的说,通过域名,最终...

content6的博客 651

一文搞懂浏览器缓存机制

浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的浏览器第一次向服务器发送HTTP请求, 浏览器拿到请求结果后,会根据响应报文的缓存标识,决定是否进行缓存。我们可以看出浏览器每次发送请求,都会先在浏览器中查找该请求的结果以及缓存标识浏览器每次拿到结果都会将该结果和缓存标识存入浏览器缓存之中我们根据是否向服务端再次发起HTTP请求和缓存过程分为两个部分,分别是强制缓存和协商缓存。

qq_45859670的博客 1342

彻底搞懂浏览器请求缓存机制

强制缓存优先于协商缓存进行,若强制缓存(Expires和Cache-Control)生效则直接使用缓存,若不生效则进行协商缓存(Last-Modified / If-Modified-Since和Etag / If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回304,继续使用缓存参考:https://zhuanlan.zhihu.com/p/53507705。

m0_56223229的博客 423

实践这一次,彻底搞懂浏览器缓存机制

前言 [实践系列] 主要是让我们通过实践去加深对一些原理的理解。 [实践系列]前端路由 [实践系列]Babel原理 [实践系列]Promises/A+规范 有兴趣的同学可以关注 [实践系列] 。 求star求follow~ 如果觉得自己已经掌握浏览器缓存机制知识的同学,可以直接看实践部分哈~ 目录 1. DNS 缓存 // 虽说跟标题关系不大,了解一下也不错 2. CDN...

大灰狼的小绵羊哥哥的博客 593

一文彻底搞懂前端缓存机制

2)当强缓存没有命中的时候,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源;当强缓存未命中时,浏览器就会发送请求到服务器,服务器会验证协商缓存是否命中,如果协商缓存命中,请求返回的http状态为304,并会显示说明Not Modified,浏览器收到该返回后,就会从缓存中加载了。

hellocoder2029的博客 1672

我终于搞懂了浏览器缓存机制

到底什么是浏览器缓存机制

qq_41040989的博客 2335

一个Bug搞懂浏览器缓存策略

缓存策略浏览器设置还是比较合理的,主要是强缓存带来的速度是非常快的,这样就存在风险。遇到问题还是需要仔细的分析,而不是知道了固有手段当成了正常流程。

星宇大前端 1383
上一篇: 前端面试手写 -- (三)Promise.all 、Promise.race
下一篇: 记录 markdown 文档的基本常用语法
CelineCoding
博客等级 码龄5年 1粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值