什么是强缓存和协商缓存

强缓存与协商缓存 1.强缓存 强缓存会直接从缓存中读取,不发请求给服务器,利用cache-control中的max-age设置强缓存的时长(s)。 cache-control的几个取值定义: private:仅浏览器缓存, public:浏览器和代理服务器都可以缓存 max-age:设置强缓存时长(s) no-cache:不进行强缓存 no-store:不进行强缓存也不进行协商缓存 1.merory cache 2.dist cache ...... 阅读详情

本文参考:什么是强缓存和协商缓存?以及他们的区别?-阿里云开发者社区

ChatGPT 仅用于自用复习

强缓存和协商缓存是浏览器缓存机制中的两种主要方式,目的是减少对服务器的请求,提高页面加载速度。它们的核心区别在于是否需要向服务器确认资源是否可以使用缓存。

1. 强缓存 (Strong Cache)

定义:

强缓存是指当浏览器请求一个资源时,如果本地缓存中有这个资源且仍然有效,则直接使用缓存,不发送请求到服务器。

实现方式:

通过 HTTP 响应头中的 Cache-Control 或 Expires 字段控制:

Cache-Control: 是 HTTP/1.1 提供的字段,用于指定缓存策略。

示例:Cache-Control: max-age=3600 表示资源在 3600 秒内有效。

cache-control除了该字段外,还有下面几个比较常用的设置值:

-no-cache:不使用本地缓存。需要使用缓存协商,先与服务器确认返回的响应是否被更改,如果之前的响应中存在ETag,那么请求的时候会与服务端验证,如果资源未被更改,则可以避免重新下载。

-no-store:直接禁止浏览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求,每次都会下载完整的资源。

-public:可以被所有的用户缓存,包括终端用户和CDN等中间代理服务器。

-private:只能被终端用户的浏览器缓存,不允许CDN等中继缓存服务器对其缓存。

Expires: 是 HTTP/1.0 的字段,指定资源过期的具体时间(绝对时间)。

示例:Expires: Wed, 18 Jan 2025 12:00:00 GMT

特点:

如果强缓存有效,浏览器直接从缓存中读取资源。

不会向服务器发送请求。

2. 协商缓存 (Conditional Request)

定义:

协商缓存是指当浏览器请求一个资源时,先向服务器发送一个条件请求,确认本地缓存的资源是否仍然有效。如果资源未更改,服务器返回 304 Not Modified,浏览器继续使用缓存资源。

实现方式:

通过 HTTP 响应头中的 ETag 或 Last-Modified 与请求头中的 If-None-Match 或 If-Modified-Since 配合使用:

ETag: 是资源的唯一标识符,资源改变时 ETag 会更新。

浏览器请求时使用 If-None-Match 携带上次的 ETag。

Last-Modified: 表示资源最后修改的时间。

浏览器请求时使用 If-Modified-Since 携带上次的 Last-Modified 值。

ETag和Last-Modified的作用和用法,他们的区别:

1在精度上,.Etag要优于Last-Modified。Last-Modified的时间单位是秒,如果某个文件在1秒内改变了多次,那么他们的Last-Modified其实并没有体现出来修改,但是Etag每次都会改变确保了精度;

2.在性能上,Etag要逊于Last-Modified,毕竟Last-Modified只需要记录时间,而Etag需要服务器通过算法来计算出一个hash值;

3.在优先级上,服务器校验优先考虑Etag。

特点:

浏览器向服务器发送请求,附带条件字段(If-None-Match 或 If-Modified-Since)。

服务器根据条件字段判断:

如果资源未更改,返回 304 Not Modified,并且浏览器使用缓存。

如果资源已更改,返回新的资源和状态码 200 OK。

特性

强缓存

协商缓存

是否请求服务器

不会发起请求

会发起条件请求

控制字段

Cache-Control / Expires

ETag / Last-Modified

响应状态码

无请求,直接使用缓存

304 (未修改) 或 200 (已更新)

适用场景

资源未过期,直接可用

资源可能已过期,需确认是否更新

浏览器缓存(Service Worker、Memory Cache、disk Cache、强缓存、协商缓存、Ctr F5、Disable Cache、强缓存假象)详解 2. 某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modified-Since能检查到的粒度是s级的,这种修改无法判断(或者说UNIX记录MTIME只能精确到秒)。作用:每次请求之前,清空缓存,导致请求无缓存可用,并同样地去除浏览器在请求头加上的If-Modified-Since或If-None-Match字段,并加上Pragma: no-cache和Cache-Control: no-cache字段,以便获取最新的资源。如果存在则直接返回; 阅读详情

相关推荐

强缓存和协商缓存分别是什么?

**摘要:**浏览器缓存通过本地存储访问过的资源副本,提升性能并减少服务器压力。缓存分为强缓存和协商缓存:强缓存通过Expires或Cache-Control(优先级更高)判断资源是否可用,命中时直接读取缓存(状态码200/304);协商缓存则通过Last-Modified/If-Modified-Since或ETag/If-None-Match与服务器通信验证资源是否变更,未变更返回304,否则返回新资源并更新缓存字段。ETag基于哈希值更精准,而Last-Modified依赖时间戳可能因时钟偏差失效。

weixin_65444510的博客 1030

深入理解浏览器的缓存机制之协商缓存与强缓存

浏览器缓存指的就是浏览器对之前请求过的文件进行缓存,以便在下一次访问时重复使用,从而节省带宽、提升访问速度、降低服务器压力。本文所说的HTTP缓存机制就是利用HTTP响应头将所请求的资源在浏览器中进行缓存,缓存方式主要分为两种:强缓存、协商缓存。

青春木鱼的博客 8568

Claude Code启动失败解决方案,执行文件不兼容一键修复

Claude Code命令行工具突然报错,显示"不支持的16位应用程序"。作者排查Node版本无果后,发现是Anthropic更新导致Windows兼容性问题。解决方法很简单:卸载旧版、切换npm镜像源、重装最新版即可恢复。经验教训:遇到类似问题应先搜索社区反馈,避免无谓排查,同时注意npm源使用后及时还原。整个踩坑过程虽折腾,但最终只是简单的重装问题。

1459

简析强制缓存和协商缓存

快速搞懂 http协议的缓存机制——强制缓存和协商缓存的基本原理以及区别

m0_63657524的博客 1万+

VS2019配置Qt5.14.2开发环境全流程(含MSVC2017 64-bit选择指南)

本文详细介绍了在VS2019中配置Qt5.14.2开发环境的完整流程,特别针对MSVC2017 64-bit编译器的选择提供了专业建议。从环境准备、Qt安装配置到VS2019集成设置,逐步指导开发者完成开发环境的搭建,并提供了常见问题的解决方案和高级优化技巧,帮助开发者高效进行Qt开发。

weixin_29243279的博客 514

【Bug已解决】Failed to fetch version ECONNREFUSED 解决方案

方案适用场景推荐指数难度方案一:NODE_EXTRA_CA_CERTS代理/企业网关证书⭐⭐⭐⭐⭐低方案二:浏览器导出证书不知证书在哪⭐⭐⭐⭐中方案三:使用系统证书macOS 用户⭐⭐⭐⭐中方案四:关闭代理直连快速验证⭐⭐⭐低方案五:更新 Node.js证书列表过时⭐⭐⭐低方案六:同步系统时间时间偏差导致⭐⭐⭐低根本原因。

博客 9974

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

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

GreekMrzzJ的博客 1万+

使用 MATLAB/Simulink + Simscape Electrical + SimPowerSystems + Stateflow,构建一个多能互补微电网系统的动态响应仿真模型

本文详细介绍了使用MATLAB/Simulink构建多能互补微电网动态响应仿真模型的方法。文章从系统架构设计入手,包含光伏、风电、柴油发电机、锂电池储能等多种组件,重点讲解了建模过程、控制策略(下垂控制、PLL、SOC管理)和模式切换逻辑(Stateflow)。通过四种典型场景(负荷突增、光伏出力骤降、并网/孤岛切换、电动机启动)的仿真分析,验证了微电网在动态响应中的关键性能指标,并提出了高可靠性设计建议。该模型为微电网的稳定性分析和优化设计提供了有效工具,特别强调了储能系统在快速功率支撑中的重要作用。

amy_mhd的博客 160

协商缓存和强缓存的区别

使用强缓存策略时,如果缓存资源有效,则直接使用缓存资源,不必再向服务器发起请求。 强缓存策略可以通过两种方式来设置,分别是 http 头信息中的 Expires 属性和 Cache-Control 属性。 (1)服务器通过在响应头中添加 Expires 属性,来指定资源的过期时间。在过期时间以内,该资源可以被缓存使用,不必再向服务器发送请求。这个时间是一个绝对时间,它是服务器的时间,因此可能存在这样的问题,就是客户端的时间和服务器端的时间不一致,或者用户可以对客户端时间进行修改的情况,这样就可能会影响缓存命

weixin_43484007的博客 7064

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1729

企业级AI平台架构设计:AI应用架构师的未来趋势

企业级AI平台是AI从“实验室”走向“生产线”的关键,而AI应用架构师就是这条“生产线”的总设计师。未来,随着生成式AI、边缘计算、自治式AI的发展,架构师的角色将越来越重要——他们不仅要构建技术平台,还要连接技术与业务,让AI真正创造价值。“不要做‘只会调模型的工程师’,要做‘能解决业务问题的架构师’。因为,真正有价值的AI,从来不是“最先进的模型”,而是“能落地、能复用、能创造业务价值的平台”。愿你在企业AI转型的浪潮中,成为那个“搭建桥梁的人”——连接技术与业务,连接现在与未来。

小程序开发 973

强缓存和协商缓存详解

浏览器缓存机制包含强缓存和协商缓存两种方式。强缓存通过响应头(如Cache-Control)直接读取本地缓存,适用于静态资源;协商缓存在资源过期时向服务器验证更新状态(通过ETag/Last-Modified),适用于可能更新的资源。两者配合使用可提升性能,前端可通过文件hash策略优化缓存效果。缓存类型分为内存缓存(临时)和磁盘缓存(持久),由浏览器根据资源特性自动选择。

记录来时的路 1241

Windows 下 OpenClaw(小龙虾) 安装全记录:从零到一的保姆级图文教程(持续更新中)

本文主要介绍了Windows 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装并配置OpenClaw 2.3 步骤三:配置模型 2.4 步骤四:对话 3. 后续使用步骤

weixin_43178406的博客 16万+

强缓存和协商缓存

强缓存策略和协商缓存策略在缓存命中时都会直接使用本地的缓存副本,区别只在于协商缓存会向服务器发送一次请求。它们缓存不命中时,都会向服务器发送请求来获取资源。在实际的缓存机制中,强缓存策略和协商缓存策略是一起合作使用的。浏览器首先会根据请求的信息判断,强缓存是否命中,如果命中则直接使用资源。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。...

无知小九的博客 5347

HyperLynx中层叠设计实例

这两种方式有点区别,前一种方式只是增加层,需要自行修改层的类型,后一种方式可以选定为某一种类型,如果是增加信号层,软件会默认同时增加一层介质层。层叠已经有8层,按照示例的层叠有4个信号层、3个地平面层和1个电源平面层,对照进行层名称(LayerName)、介质类型(Type)及用途(Usage)设置。在这列中,有的是白色,有的是淡蓝色。白色的说明可以修改,如第一行是介质,通常在最外层的介质有两个用途,阻焊层和介质,单击该行会出现一个下拉菜单,选择SolderMask,即为阻焊层。...

小幽余生不加糖 5878

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何配置强缓存和协商缓存

详细了解强缓存、协商缓存、cache-control、expires、etag、last-modified等参数的配置

Ky_Iverson的博客 2289

WINCC7.3破解文件

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

HTTP系列之HTTP缓存 —— 强缓存和协商缓存

如果没有命中强缓存,浏览器会发送请求到服务器,该请求会携带第一次请求返回的有关缓存的header字段信息(Last-Modified / IF-Modified-Since、Etag / IF-None-Match),由服务器根据请求中的相关header信息来对比结果是否命中协商缓存,若命中,则服务器返回新的响应header信息更新缓存中的对应header信息,但是并不返回资源内容,它会告知浏览器可以直接从缓存获取;否则返回最新的资源内容。这个时间代表着这个资源的失效时间,在此时间之前,即命中缓存。

cherry__yu的博客 2601

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

前端强缓存和协商缓存

缓存是前端面试的一个常见知识点,下面对于实际项目中如何进行缓存的设置给出方案。 强缓存和协商缓存 浏览器缓存是浏览器将用户请求过的静态资源存储到电脑本地磁盘中,当再次访问时,就可以直接从本地缓存中加载而不需要去向服务器请求了。但是缓存也有缺点,如果服务端资源更新了,客户端没有强制刷新的情况下,看到的内容还是旧的。所以,前端需要根据项目中各个资源的实际情况,做出合理的缓存策略。这就出现了强缓存和...

qq_40885461的博客 3726

前端协商缓存强缓存如何使用_前端强缓存和协商缓存

缓存是前端面试的一个常见知识点,下面对于实际项目中如何进行缓存的设置给出方案。强缓存和协商缓存浏览器缓存是浏览器将用户请求过的静态资源存储到电脑本地磁盘中,当再次访问时,就可以直接从本地缓存中加载而不需要去向服务器请求了。但是缓存也有缺点,如果服务端资源更新了,客户端没有强制刷新的情况下,看到的内容还是旧的。所以,前端需要根据项目中各个资源的实际情况,做出合理的缓存策略。这就出现了强缓存和协商缓存...

weixin_39750731的博客 1284
上一篇: http常见的状态码
下一篇: http1.0和http1.1的区别
himselfd
博客等级 码龄4年 135粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值