首页 > 其他分享 >强缓存和协商缓存的区别

强缓存和协商缓存的区别

时间:2024-09-13 15:53:25浏览次数:12  
标签:缓存 浏览器 请求 区别 协商 服务器发送 资源

强缓存和协商缓存是浏览器缓存策略的两种主要形式,它们各自有不同的特点和应用场景。以下是它们之间的主要区别:

数据来源与交互方式:
强缓存:在缓存有效期内,浏览器不会向服务器发送请求,而是直接从本地缓存中读取数据。这意味着在缓存有效期内,浏览器与服务器之间不会发生任何交互。

协商缓存:每次请求都会与服务器进行交互。浏览器会向服务器发送请求,询问资源是否有更新。服务器会根据请求中的某些标识(如ETag或Last-Modified)来判断资源是否发生了变化,并返回相应的响应。

响应状态码:
强缓存:如果命中强缓存,浏览器会直接读取本地缓存,而不会向服务器发送请求。因此,强缓存的响应状态码为200(OK)。

协商缓存:如果资源未发生变化,服务器会返回304(Not Modified)状态码,表示浏览器可以继续使用本地缓存的数据。如果资源有更新,服务器会返回新的资源数据,并可能更新相关的缓存标识。

缓存验证机制:
强缓存:主要基于Expires和Cache-Control这两个HTTP头信息来实现。通过设置这些头信息的值,可以指定缓存的有效期。在有效期内,浏览器不会向服务器发送请求。

协商缓存:主要基于ETag和Last-Modified这两个HTTP头信息来实现。ETag是一个资源的唯一标识,Last-Modified表示资源最后修改的时间。浏览器在请求时会带上这两个信息,服务器会根据这些信息来判断资源是否发生了变化。

刷新策略:
强缓存:在浏览器强制刷新(如F5刷新或Ctrl+F5强制刷新)的情况下,强缓存不会生效,浏览器会重新向服务器发送请求。

协商缓存:在浏览器强制刷新的情况下,协商缓存仍然会生效。浏览器会发送请求并带上缓存标识,服务器会根据这些标识来判断是否返回新的资源。

综上所述,强缓存和协商缓存各有其特点和适用场景。在实际应用中,通常会结合使用这两种缓存策略,以实现更好的性能和用户体验。

标签:缓存,浏览器,请求,区别,协商,服务器发送,资源
From: https://blog.csdn.net/weixin_60608280/article/details/142209865

相关文章

  • 清理C盘缓存,超简单的清理C盘缓存清理方法
    清理C盘缓存是优化Windows系统性能的重要步骤,以下是一些超简单的清理C盘缓存的方法:使用磁盘清理工具步骤:右键点击C盘(系统盘),选择“属性”。在C盘属性窗口中,点击“磁盘清理”按钮。系统会分析C盘上的文件,并列出可以删除的文件类型。勾选你想要删除的文件类型,特别是“临时文......
  • 清理C盘缓存,清理C盘缓存的操作步骤
    清理C盘缓存是维护Windows系统性能的重要步骤之一。以下是一些详细的操作步骤,帮助你清理C盘缓存:使用磁盘清理工具打开“此电脑”:首先,打开文件资源管理器(通常可以通过点击任务栏上的文件夹图标或按Win+E快捷键来打开),然后找到并右键点击C盘(通常是系统盘)。选择“属性”:在弹出......
  • Vivado IP综合选项Global和Out-Of-Context区别
    当我们在使用Vivado进行IP综合时,通常需要选择适合当前设计的综合选项,其中全局综合和上下文外综合是两个常用选项,但它们之间有哪些差别呢?首先全局综合会将整个设计代码一起综合成为一个顶层模块,这种综合方式可以提高设计的时序分析和优化效率,同时也能避免时间浪费在综合子......
  • 一文说清楚数据集成中的流处理与批处理的区别
    流数据处理和批数据处理之间的区别主要在于数据的处理方式、时间性、架构设计和适用场景。虽然批处理系统和流处理系统都可以处理数据,但它们处理数据的方式和目的不同,以我们来对“流数据处理”和“批数据处理”进行差异分析。 1、流数据处理vs.批数据处理流数据处理(StreamP......
  • LEFT JOIN 与 left semi join 的区别
    好的,我再给你举一个使用HiveSQL的例子,比较`LEFTJOIN`和`LEFTSEMIJOIN`的区别,并加入测试数据。假设我们有两个表:1.`customers`表:-`customer_id`:客户ID-`customer_name`:客户名称-`customer_email`:客户邮箱2.`orders`表:-`orde......
  • 【StrUtil.isNotEmpty;StrUtil.isNotBlank;StrUtil.isEmpty;StrUtil.isBlank;】的判断区别
    在Java中,StrUtil是一个常用的字符串工具类,通常来自于Hutool库。以下是StrUtil.isNotEmpty(),StrUtil.isNotBlank(),StrUtil.isEmpty()和StrUtil.isBlank()的区别:StrUtil.isNotEmpty(Stringstr):功能:判断字符串是否不为空(即字符串不为null且长度大于0)。示例:StrUtil......
  • mvn clean install 和 mvn package 的区别
    mvncleaninstall和mvnpackage是Maven构建工具中的两个常用命令,它们在执行时的作用和流程有所不同。1.mvnpackagemvnpackage是Maven的一个构建命令,作用是编译代码并打包为一个可分发的格式,如JAR、WAR等。执行流程:编译代码:编译src/main/java下的源代码。运......
  • PbootCMS模板自动清理runtime缓存
    runtime目录的作用runtime 目录位于PbootCMS的安装目录下,主要用于存储系统运行时产生的临时文件和缓存文件。这些文件包括但不限于:缓存文件日志文件临时文件随着时间的推移,runtime 目录中的文件会逐渐增多,占用大量磁盘空间。当文件过多时,会造成系统性能下降,甚至出现一......
  • 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)
    十,SpringBoot的内容协商的详细剖析(附+Debug调试说明)文章目录十,SpringBoot的内容协商的详细剖析(附+Debug调试说明)1.基本介绍2.准备工作3.内容协商的本质4.内容协商:注意事项和使用细节5.总结:6.最后:1.基本介绍根据客户端接收能力不同,SpringBoot返回不......
  • 金百达F6Pro带缓存sm2256K开卡成功 附工具 AD, 3A, 18, A3, 61, 25 ,H27UDG8M2M
     开卡工具 SM2256AB_MPO0811A_FWO0803A_SLCFirst.zip      SM2256AB_MPO0811A_FWO0803A_SLCFirst.zip ......