什么是强制缓存?什么是协商缓存?cache

强制缓存和协商缓存是用于在Web浏览器和服务器之间进行缓存控制的两种机制。

  1. 强制缓存(强缓存,强制缓存):
    强制缓存是通过设置HTTP响应头来实现的,它告诉浏览器在一定时间内直接使用缓存的副本,而不需要再向服务器发起请求。常见的强制缓存相关的响应头有两个:
    • Expires:指定一个绝对过期时间,即缓存将在该时间之后失效。
    • Cache-Control:通过设置max-age指令来指定一个相对过期时间,即缓存将在指定的秒数之后失效。

当浏览器发送请求时,会检查强制缓存相关的响应头信息。如果缓存仍然有效,浏览器将直接从缓存中读取资源,并且不会发送请求到服务器。这样可以显著提高页面加载速度,减少对服务器的访问。

  1. 协商缓存(协商缓存,条件缓存):
    协商缓存是在强制缓存失效的情况下进行的一种机制,用于验证缓存的有效性。当浏览器发现强制缓存失效时,它会向服务器发送一个附带条件的请求,以判断缓存是否仍然有效。服务器会根据请求的条件进行验证,并返回相应的状态码来指示缓存是否有效。

协商缓存相关的请求头和响应头有以下几个常见的:

  • If-Modified-Since / Last-Modified:浏览器在请求时发送If-Modified-Since头,将上次缓存的最后修改时间发送给服务器。服务器通过比较资源的最后修改时间来判断缓存是否有效,并返回相应的状态码(如304 Not Modified)。
  • If-None-Match / ETag:浏览器在请求时发送If-None-Match头,将上次缓存的ETag值发送给服务器。服务器通过比较资源的ETag来判断缓存是否有效,并返回相应的状态码。

如果服务器返回的状态码指示缓存仍然有效,浏览器将继续使用缓存的副本。如果缓存失效,服务器将返回新的资源内容,并带有新的缓存相关的响应头,浏览器将使用新的资源并更新缓存。

综合使用强制缓存和协商缓存可以有效地减少对服务器的请求,提高页面加载速度,并减轻服务器的负载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java泛型(待补充)

泛型是一种“代码模板”,可以用一套代码套用各种类型。 一、什么是泛型? 泛型就是编写模板代码来适应任意类型;泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查;注意泛型的继承关系&#xff1a…

Vue3响应式源码实现

Vue3响应式源码实现 初始化项目结构 vue-proxy ├── effect.js ├── effect.ts ├── index.html ├── index.js ├── package.json ├── reactive.js ├── reactive.ts └── webpack.config.jsreactive.ts import { track, trigger } from "./effect&q…

java操作adb查看apk安装包包名【搬代码】

Testpublic static void findadb() throws InterruptedException {String apkip"E:\\需求\\2023\\gql_1.0.1.apk";String findname1"cmd /c cd E:\\appium\\android-sdk\\build-tools\\27.0.2";//没有进到这里String s1 Cmd.exeCmd(findname1);System.out…

缓存案例-架构真题(二十二)

试题一 某大型电商平台建立一个B2B商店系统,并在全国建设了仓储中心。但是在运营过程中,发现很多跨仓储中心调货,延误运送。为此建立全国仓储系统,通过对订单的分析和挖掘,并通过大数据分析预测各类配置,降…

什么是接口测试,如何做接口测试?

比起点点点的功能测试,“接口测试”显得专业又高大上,也因此让有些初级测试人员“望而生畏”。别担心,其实接口测试也是功能测试的一种,它是针对接口进行的功能测试。 写在前面:本文参考了茹炳晟老师的《测试工程师 全…

opencv-4.5.2-android-sdk.zip安装教程

opencv-4.5.2-android-sdk.zip: 下载链接:百度网盘 请输入提取码 提取码:s0p2 导入模块的方法: ①、导入模块 ②、定位到sdk目录 点击ok就行,就导入成功了。导入成功后会多出一个可展开的opencv文件夹(自己命名的),一定要能展…

【Docker】 07-安装ElasticSearch、Kibana

安装ElasticSearch 1、拉取镜像 docker pull elasticsearch:6.4.2 2、运行 docker run -p 9200:9200 -p 9300:9300 --name es -d elasticsearch:6.4.2 启动会报错,按照下面流程修改 3、在宿主机中,修改配置sysctl.conf vim /etc/sysctl.conf 加入如下配…

Mediasoup在node.js下多线程实现

mediasoup基于socket.io的交互消息来完成join-room的请求过程。Join的过程,实际就是获取stream的过程,也就是视频加载时间(video-load-speed)。在RTMP系统,视频加载时间是秒开。Mediasoup给出的第一个frame是I-frame,但由于交互的…

wininet,winhttp,xmlhttprequest,各版本区别 《转》

一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP) 实现Http访问,微软提供了二套API:WinINet, WinHTTP(分别封装于system32目录下的wininet.dll和winhttp.dll内) 二者主要区别在于后者更为安…

明星录制祝福视频:传递温情与关怀的独特方式

在当今社交媒体和数字化时代,明星录制祝福视频已经成为一种新颖而独特的方式,用来表达温馨祝福、分享喜悦,或者为特殊的时刻增添一份特别的意义。无论是生日、结婚、毕业,还是节日、活动等,明星录制的祝福视频能够让人…

leetcode283移动零

题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入:…

MybatisPlus多表关联分页查询

Mybatis-plus是一个Mybatis的增强工具,提供了许多功能强大的API,其中包括分页查询和多表关联查询。在Mybatis-plus中,连表查询可以使用LambdaQueryWrapper或QueryWrapper加入多个表进行查询,然后再使用IPage进行分页。 IPage<Map<String, Object>> page = new…

规避【虚拟专线技术】使用风险实现业务系统安全

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 一、技战法描述 VPN是利用Internet等公共网络基础设施&#xff0c;通过隧道加密通信技 术&#xff0c;为用…

Jtti:Ubuntu18.04如何修改远程ssh端口号

要在Ubuntu 18.04上修改SSH的远程端口号&#xff0c;您需要编辑SSH服务器配置文件并指定新的端口号。以下是具体的步骤&#xff1a; 以root或具有sudo权限的用户登录到您的Ubuntu服务器。 备份SSH配置文件&#xff08;可选&#xff09;&#xff1a; 在进行任何更改之前&…

Hive UDF、UDAF和UDTF函数详解

在 Hive 中,可以编写和使用不同类型的自定义函数,包括 UDF(User-Defined Functions)、UDAF(User-Defined Aggregate Functions)和 UDTF(User-Defined Table Functions)。这些自定义函数允许你扩展 Hive 的功能,以执行自定义的数据处理操作。 UDF(User-Defined Functi…

QT实现TCP通信(服务器与客户端搭建)

一、TCP通信框架 二、QT中的服务器操作 创建一个QTcpServer类对象&#xff0c;该类对象就是一个服务器调用listen函数将该对象设置为被动监听状态&#xff0c;监听时&#xff0c;可以监听指定的ip地址&#xff0c;也可以监听所有主机地址&#xff0c;可以通过指定端口号&#x…

pdf用什么软件打开?介绍几种常用打开方法

pdf用什么软件打开&#xff1f;PDF是一种广泛使用的文件格式&#xff0c;由于其跨平台和易于共享的特点&#xff0c;它已成为许多人在日常工作和学习中使用的首选文件格式。但是&#xff0c;有时候我们可能会遇到一些问题&#xff0c;比如不知道用什么软件打开PDF文件&#xff…

【系统编程】线程池以及API接口简介

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

数据结构与算法-插入希尔归并

一&#xff1a;排序引入 我们通常从哪几个方面来分析一个排序算法&#xff1f; 1.时间效率&#xff1a;决定了算法运行多久&#xff0c;O&#xff08;1&#xff09; 2.空间复杂度&#xff1a; 3.比较次数&交换次数:排序肯定会牵涉到两个操作&#xff0c;一个比较是肯定的。…

14 | Spark SQL 的 DataFrame API 读取CSV 操作

sales.csv 内容 date,category,product,full_name,sales 2023-01-01,Electronics,Laptop,John Smith,1200.0 2023-01-02,Electronics,Smartphone,Jane Doe,800.0 2023-01-03,Books,Novel,Michael Johnson,15.0 2023-01-04,Electronics,Tablet,Emily Wilson,450.0 2023-01-05,B…