浏览器缓存之强缓存和协商缓存

浏览器的缓存机制 优点 缺点 协商缓存和强缓存 浏览器缓存过程 如何判断强缓存是否过期 2.下一次加载资源时,先比较当前时间和上一次返回200时的时间差,如果没有超过cache-control设置的max-age,则没有过期,命中强缓存,不发请求直接从本地缓存读取该文件(如果浏览器不支持HTTP1.1,则用expires判断是否过期);2.协商缓存:向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源;区别是强缓存不会发请求,协商缓存会发请求。 阅读详情

为什么需要缓存?

- 缓存的优点:

1.减少对服务器的访问次数,减轻了服务器的压力

2.节省用户网络带宽(就是省钱,带宽都是按流量算钱的)

3.从缓存读取更匀速减少等待优化了用户体验

- 缓存的缺点

资源被缓存后用户不能及时获取不到最新的资源,所以缓存不能乱用

强缓存

涉及的http头:

1.expires: 资源的过期时间 是一个绝对时间

2.cache-control: 多个字段组合对缓存的控制 为了解决expires是绝对时间可能不准的弊端

        - max-age: 缓存生效的时间长度 单位是s 在expires上加了一个最大可用时长

        - no-cache: 设置浏览器不能直接用缓存,必须先询问服务器缓存是否有效才能使用缓存

        - no-store: 禁止缓存,只能从服务器端获取最新资源

浏览器会根据expires来判断缓存是否可用

expires和cache-control同时设置后者优先级更高

因为expires是绝对时间,客户端和服务端的时间可能会误差,客户端的时间是可以手动设置的,所以有弊端,所以才有了cache-control,它的max-age是相对时间,还能设置浏览器用不用缓存机制

协商缓存

因为强缓存是客户端处理是否读取缓存的,不会请求服务器验证缓存是否可用,只要没到expires的过期时间就会一直使用,导致服务器在expires时间内资源发生了变化客户端获取不到最新资源,于是就有了协商缓存和服务器进行协商缓存是否可用

涉及的http头:

1.last-modify/if-modified-since 文件最后修改时间

2.etag/if-none-match 文件的唯一标识 文件修改就会生成一个新的唯一标识

last-modify和etag同时设置服务器会优先验证etag,etag一致再验证last-modify,如果都一致则返回304让浏览器读缓存,否则返回最新的资源

上述的http头都是成对使用的,浏览器首次请求资源服务器响应头会返回一个last-modify或者etag,浏览器再次请求同一资源时就会在请求头中设置另一个头将其带过去给服务器验证

既生last-modify何生etag?

http1.1中的etag是解决last-modify的弊端:

- last-modify只能精确到秒级,如果一个资源的last-modify和if-modified-since在一秒内发生修改会导致时间不准缓存失效拿不到最新的资源

- 有些定期生成的文件也会导致last-modify发生变化但是文件内容并没有变化导致缓存无法复用

- 可能存在服务器没有设置准确的最后修改时间或者与代理服务器的时间不一致等情况导致缓存照样更新

浏览器加载资源过程

1.浏览器首次请求资源:

2.浏览器加载已经请求过的资源

响应头总结

1.强缓存

响应头:

cache-control: max-age: 60

expires: 过期时间

如果没过期,直接用,如果过期了, 发请求

2.协商缓存

响应头:

last-modify: 时间 最后修改时间

etag: 服务器文件的唯一标志

请求头:

if-modify-since: 上次返回的last-modify

if-none-match: 上次返回的etag

对一些周期性固定不变的数据使用强缓存,对一些变化频繁的数据使用协商缓存,协商缓存验证优先级大于强缓存

请求响应头总结

浏览器要求服务器特定行为,设置请求头

服务器要求浏览器特定行为,设置响应头

锁定放大器 阅读详情

相关推荐

sqoop抽取mysql的数据到hive表里面,字段内容被自动截取,导致字段不全的问题解决

今天央视重新转播NBA,写篇博客纪念一下这个重要的日子,湖人的表现就呵呵了!!!! 强行转到博客的主题来 mysql的字段属性:该字段能存下的值比如:“山东” `province` varchar(3) NOT NULL COMMENT '省份' 用sqoop sqoop import --connect "jdbc:mysql://xxxxxx:3306/xxxxxx?tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull..

放肆桀骜 963

强缓存引起问题解决方案

存在的问题:发布时资源更新问题,更新了资源,但是用户每次请求时依然从缓存中获取原来的资源,除非用户清掉或者强刷新,否则看不到最新的效果。 通常我们写页面直接放到服务器上,等待用户访问,那么每次用户访问页面都需要重新加载例如css文件等静态资源,十分影响性能,浪费带宽。于是第一个解决办法: 1、利用304定向重定向,让浏览器本地缓存即协商缓存。 缺点:协商缓存还是需要和浏览器通信一次

newbie_ljm的博客 2872

手把手教你用光耦搭建安全隔离电路:从洗衣机控制板到PLC输入模块实战

本文通过洗衣机控制板驱动高压电机和PLC输入模块采集现场信号两个实战场景,手把手教你使用光耦搭建安全隔离电路。文章详细解析了电路架构、关键器件选型、参数计算、仿真验证及PCB布局避坑技巧,并对比了光耦与数字隔离器的适用场景,帮助电子工程师掌握这门保障系统稳定与安全的必备技能。

h6j7k8l9p0的博客 462

浏览器缓存(强缓存、协商缓存)及解决发版浏览器缓存问题

【代码】浏览器缓存(强缓存、协商缓存)及解决发版浏览器缓存问题。

weixin_44043530的博客 2953

WorkBuddy 集成 飞书CLI,全程10分钟,丝滑无比,老板要注意了...

飞书CLI实测:10分钟实现AI操控飞书办公 飞书CLI作为命令行工具,让用户通过简单命令完成飞书各项操作。本文记录了从安装到使用的完整过程:一键安装仅需10分钟,支持200多条命令覆盖飞书全部功能,与AI结合后可实现自然语言办公。实测中成功用语音指令创建了7天发文计划日程,验证了其便捷性。虽然首次认证存在超时问题,但整体体验流畅。该工具将复杂操作简化为自然语言指令,大幅提升办公效率,特别适合需要频繁使用飞书的用户。后续还将探索更多自动化办公场景。

三棱球的专栏 1142

Vivado 2018.3实战:用IDELAYE3和ISERDESE3搞定高速ADC数据采集(附仿真源码)

本文详细介绍了在Vivado 2018.3中使用Xilinx UltraScale架构的IDELAYE3和ISERDESE3原语实现高速ADC数据采集的实战方法。通过分析5GHz采样系统的时序挑战,提供从PCB布局到Vivado实现的完整解决方案,包括精密时序校准、多相位数据重组及系统级调试技巧,并附赠仿真源码助力工程师快速掌握高速数据采集技术。

weixin_30567225的博客 582

强缓存、协商缓存

强缓存 客户端第一次向服务器请求资源时,服务器返回某个资源的同时,添加某些头部信息,告诉客户端将资源保存在本地,并在未来的某个时点之前再次请求这个资源时,直接从本地获取就可以了。 【字段控制】 Expires: 代表缓存资源的过期时间,一个绝对时间的GMT格式的时间字符串 浏览器再次请求这个资源时,会先从缓存中找到这个资源,然后获取Expires时间与当前的请求时间比较,如...

小白向前冲! 536

【IoT】压力式电子脉搏器设计

智能硬件

产品线负责人 1618

浏览器强缓存还未过期,但服务器资源已经变了怎么办?

本文探讨了前端开发中浏览器强缓存机制带来的经典问题:当服务器资源更新但浏览器仍在缓存有效期内时,用户无法获取最新版本。文章首先回顾了强缓存的原理,然后分析了问题场景及其原因,进而提供了三种解决方案:使用文件名hash(最佳实践)、缩短缓存时间+协商缓存、请求参数版本号。最后给出了不同资源的缓存策略推荐,强调通过资源唯一标识和合理缓存策略来兼顾性能与更新。核心要点是:文件名加hash可彻底解决问题,同时实现长期缓存和即时更新。

m0_46335150的博客 1159

SAP Cloud ERP 是什么,一篇文章讲清楚

SAP Cloud ERP并非简单将传统ERP搬到云上,而是对企业核心流程、数据和管理方式的全面重构。它包含S/4HANA Cloud的公有云版(标准化、快速部署)和私有云版(灵活定制),分别对应GROW with SAP和RISE with SAP实施路径。核心价值在于实现实时数据整合、端到端流程贯通及持续演进能力。企业需根据发展阶段选择:新兴企业适合标准化公有云,复杂组织可考虑私有云迁移。关键在于转变管理思维,避免将旧系统问题复制到新平台。上云决策本质是企业对数字化基座的选择,需权衡标准化与个性化需求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 107

【实战圣经】YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

m0_71589036的博客 251

如何清除微信内嵌浏览器的缓存数据

清除微信内嵌浏览器的缓存数据,可以按照以下步骤进行: 进入微信聊天页面,点击右上角的三个点,选择“设置”; 在设置页面中,找到“通用”选项,再点击“清除缓存”; 在弹出的提示框中,选择“清除”即可。 这样就可以清除微信内嵌浏览器的缓存数据了。需要注意的是,清除缓存后可能会导致一些网页加载变慢或者需要重新登录账号,但也能帮助解决一些浏览器运行不正常的问题。 ...

weixin_42584586的博客 7751

Coverity本地增量C/C++代码检查(Linux)操作简介

Coverity 是一款精确的综合静态分析与应用安全测试 (SAST) 平台,它可以在编写代码时发现关键的缺陷和安全缺陷,防止它们变成安全漏洞、故障或维护缺陷。

1482

浏览器的强缓存和协商缓存

浏览器的强缓存和协商缓存 这里说的缓存是指浏览器(客户端)在本地磁盘中对访问过的资源保存的副本文件。 浏览器缓存主要有以下几个优点: 减少重复数据请求,避免通过网络再次加载资源,节省流量。 降低服务器的压力,提升网站性能。 加快客户端加载网页的速度, 提升用户体验。 浏览器缓存分为强缓存和协商缓存,两者有两个比较明显的区别: 如果浏览器命中强缓存,则不需要给服务器发请求;而协商缓存最终由浏览...

GreekMrzzJ的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

浏览器缓存机制(强缓存和协商缓存)

1、为什么需要浏览器缓存? 当我们访问同一个页面时,请求资源、数据都是需要一定的耗时,如果可以将一些资源缓存下来,那么从第二次访问开始,就可以减少加载时间,提高用户体验,也能减轻服务器的压力 2、有哪些缓存? 浏览器缓存分为强缓存和协商缓存,当存在缓存时,客户端第一次向服务器请求数据时,客户端会缓存到内存或者硬盘当中,当第二次获取相同的资源,强缓存和协商缓存的应对方式有所不同。 强缓存:当客户端第二次向服务器请求相同的资源时,不会向服务器发送请求,而是直接从内存/硬盘中间读取 协商缓存:当客户端第二次

开心学前端 : ) 3052

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

浏览器缓存机制:强缓存和协商缓存

缓存 memory cache 是内存中的缓存,主要包含当前页面中已经下载的资源,比如样式、脚本、图片等等。读取内存中的数据肯定比磁盘块,但是内存缓存的时间段,会随着进程的是否而释放。一旦我们关闭 Tab 页面,内存中的缓存就被释放了。因为内存有限,并不是所有的资源文件都会放在内存里缓存,它主要用来缓存有 preloader 相关指令的资源,比如。preloader 可以一边解析 js/css 文件,一边网络请求下一个资源。 disk cache 也就是存在磁盘上的缓存,读取速度比 memory cach

weixin_42910765的博客 2520

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

浏览器的缓存机制(强缓存和协商缓存)

缓存 1. 缓存理解 缓存定义: 1. 浏览器在本地磁盘上将用户之前请求的数据存储起来,当访问者再次需要改数据的 时候无需再次发送请求,直接从浏览器本地获取数据 2.缓存的好处: 1. 减少请求的个数 2. 节省带宽,避免浪费不必要的网络资源 3. 减轻服务器压力(少买几台服务器) ...

codingWeb的博客 2327

关于浏览器的缓存(强缓存和协商缓存的详解)

浏览器的缓存分为强缓存和协商缓存,当客户端请求某个资源的时候,获取缓存的流程如下 (1)先根据这个资源的http header判断它是否命中强缓存,如果命中,则直接从本地缓存中获取资源,不会则向服务器请求 资源。 (2)当强缓存没有命中时,客户端会发送请求到服务器,服务器通过另一些request header验证这个资源是否命中协商缓存,这个过程成为http再验证,如果命中,服务器直接返回...

雷佳佳的博客 3832

搞懂浏览器缓存(强缓存和协商缓存)

浏览器缓存、强缓存、协商缓存、cache-control、private、public、max-age、no-cache、no-store 、etag、last-modified

dgdfshsdf的博客 1874

浏览器缓存:强缓存和协商缓存

介绍: 浏览器缓存是为了节约资源,并且可以加速浏览网站的速度,当用户第一次进行访问网页的时候,浏览器在用户磁盘上对请求的文档进行保存,当用户第二次访问的时候,就会从本地直接显示,从而提高了访问页面的速度。浏览器缓存分为:强缓存和协商缓存两种。 缓存的优点: 减少了不必要的数据传输,节省带宽 减少服务器的负担,提升网站性能 加快了客户端加载网页的速度 用户体验友好 缺点: 资源如果有更改但是客户端不及时更新会造成用户获取信息滞后,如果老版本有bug的话,情况会更加糟糕。 强缓存: 如果资源没过

xiasohuai的博客 1769

浏览器缓存机制(强缓存和协商缓存)总结

深入理解浏览器的强缓存和协商缓存

weixin_60896381的博客 1421

‌浏览器缓存:强缓存和协商缓存

浏览器缓存是Web性能优化的核心技术,它通过存储资源副本(如HTML、CSS、JavaScript文件)来减少网络请求次数,提升页面加载速度和用户体验。缓存机制主要分为两类:强缓存和协商缓存。协商缓存的核心是:浏览器在每次请求资源时,先向服务器验证缓存是否有效。如果有效,服务器返回304(Not Modified),浏览器使用缓存;否则,服务器返回新资源。强缓存的核心思想是:浏览器在请求资源时,先检查本地缓存是否有效。如果有效,直接从缓存加载资源,无需与服务器通信。示例:协商缓存请求和响应头(伪代码)。

2501_93895463的博客 426

浏览器强缓存和协商缓存

是为了节约网络的资源加速浏览。简单来说:把一个已经请求过的Web资源(如html页面,图片,js,数据等)拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。下一次请求,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。

守灯者的博客 926
上一篇: 移动端1像素边框问题
下一篇: 前端react大文件切片上传
williamyi74
博客等级 码龄9年 93粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值