http---HTTP缓存

news2024/7/4 4:36:49

目录

1、缓存介绍

2、http缓存

3、强缓存

4、协商缓存


1、缓存介绍

缓存:存储将被用的数据,让数据访问更快。

缓存相关术语

  • 命中:在缓存中找到了请求的数据
  • 不命中/穿透:缓存中没有需要的数据
  • 命中率:命中次数/总次数
  • 缓存大小:缓存中一共可以存多少数据
  • 清空策略:如果缓存空间不够数据如何被替换

清空策略:FIFO先进先出;LFU-least Frequently used使用频率小的清除; LRU-Least recently used太久没使用的条目清理掉

2、http缓存

HTTP 缓存是web性能优化的重要手段,通过复用缓存资源,减少了服务器和客户端的通信次数,降低网络延迟,加速页面加载,解服务器端的压力。显著提升网站和应用的性能,提高用户体验

http缓存策略主要分为两种方式:强缓存 (浏览器端执行);协商缓存(服务器端执行)

优先级: 强缓存 > 协商缓存

3、强缓存

强缓存即强制直接使用缓存

强缓存的两种方式:【Expires】、【Cache-Control】,cache-control是expires的完全替代方案,在可以使用cache-control的情况下就不要使用expires

强缓存不会向服务器发送请求,直接从缓存中读取资源,在 chrome 控制台的 network 选项中可以看到该请求返回 200 的状态码,并且size显示from disk cache或from memory cache。

(1)Expires:该字段是HTTP1.0版本提出的,是浏览器访问服务器时,由服务器在Response Headers字段中设置该资源过期时间。Expires:<最后期限>;表示该请求在<最后期限>前使用缓冲资源,过后再次请求则请会请求服务器获取新的资源。Expires告诉浏览器该内容在何时过期,暗示浏览器在该内容过期之前不需要再询问服务器,而直接使用本地缓存即可。

Expires:new Date("2023-2-2 23:59:59"); 设置一个过期时间(服务器端返回,在Response Headers中 携带该参数)。
Expires存在问题:本地时间和服务器时间不同步的问题。

(2)Cache-Control:该字段是HTTP1.1提出的,该字段的值是 过期时长(类似一种倒计时的功能),这样即使 服务器和浏览器日期时间不一致也不会导致Expires的问题,到了时间自动过期

Cache-Control:max-age=600;代表的是该请求的资源在600秒后过期, 600秒前使用缓存资源。

(服务器端返回,在Response Headers中 携带该参数)。

注意事项:

当Expires和Cache-Control同时存在时,优先使用HTTP1.1的Cache-Control

当强缓存的【Expires】、【Cache-Control】都不命中时,则进入协商缓存。

4、协商缓存

协商缓存就得和服务器协商确认下这个缓存能不能用

协商缓存的两种方式:【Last-Modified】、【ETag】,ETag并不是last-modified的完全替代方案,而是补充方案,具体用哪一个,取决于项目业务场景,无孰好孰坏之分

协商缓存会先向服务器发送一个请求,服务器会根据这个请求的 request header 的一些参数来判断是否命中协商缓存, 如果命中,则返回 304 状态码并带上新的 response header 通知浏览器从缓存中读取资源

(1)Last-Modified:通过比对资源文件的修改时间进行协商缓存

Response Headers携带:Last-Modified:<昨天>

Request Headers携带:IF-Modified-Since:<昨天>

表示最后修改时间,是指请求的资源的最后修改时间,在浏览器第二次访问服务器时,会在Request Headers的If-Modified-Since中带上该字段的值(值来自服务器),服务器接到请求后,会对If-Modified-Since的值与该请求资源的最后修改时间进行对比,若请求的资源最后修改时间大于If-Modified-Since的值,则返回新的资源,并重新设置Last-Modified字段的值。

Last-Modified存在问题

  • 在文件内容本身不修改的情况下,依然有可能更新文件修改时间(比如修改文件名再改回来),此时文件内容并没有修改,缓存依然失效了
  • 因为文件修改时间记录的最小单位是秒,所以当文件在几百毫秒内完成修改的时候,文件修改时间并不会改变,这样,即使文件内容修改了,依然不会返回新的文件

(2)ETag:通过生成文件内容的唯一哈希值,即文件指纹进行协商缓存

E-Tag没有采用内容的最后修改时间,而是采用了一串编码来标记内容,称为ETag

Response Headers携带:E-Tag:1234567

Request Headers携带:If-None-Match:1234567

如果两个文件指纹完全吻合,说明文件没有被改变,则直接返回304状态码和一个空的响应体并return。如果两个文件指纹不吻合,则说明文件被更改,那么将新的文件指纹重新存储到响应头的ETag中并返回给客户端

ETag缺点:

  • 需要文件尺寸大,数量多,并且计算频繁,那么服务端就需要更多的计算开销,从而影响服务器的性能
  • ETag有强验证和弱验证,所谓强验证,ETag生成的哈希值深入到每个字节,从而保证文件内容绝对的不变,非常消耗计算量;弱验证则是提取文件的部分属性来生成哈希值,因此不必精确到每个字节,所以整体速度会比强验证快,但是精确率不高,会降低协商缓存的有效性

参考文章:

关于前端http缓存的使用及分类
 

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

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

相关文章

Yarn(Yet Another Reource Negotiator)另一个资源协调者

官网引用 总结性 产生的需求 YARN工作逻辑 通用的资源管理系统&#xff0c;为上一层应用提供统一的资源管理和调度。解决集群资源利用率&#xff0c;数据共享&#xff0c;资源管理统一问题&#xff0c;yarn取代Job Tracker角色 组件说明 Client 向RM提交任务&#xff0c;终…

1、软件测试概述

1、软件测试概述 一、软件生命周期二、软件开发模型1、瀑布模型2、增量模型3、原型模型4、敏捷开发 三、软件质量1、软件质量概念2、影响软件质量的因素 一、软件生命周期 软件生命周期分为多个阶段&#xff0c;每个阶段有明确的任务&#xff0c;通常&#xff0c;可将软件生命…

ARM寄存器组织

ARM有37个32位长的寄存器&#xff1a; 1个用做PC&#xff08;Program Counter&#xff09;&#xff1b; 1个用做CPSR(Current Program Status Register)&#xff1b; 5个用做SPSR&#xff08;Saved Program Status Registers&#xff09;&#xff1b; 30个通用寄存器。 AR…

Unity之OpenXR+XR Interaction Toolkit实现 射线和物体交互事件回调

前言 前面我们介绍了如何抓取物体&#xff0c;今天我们来说一下如何和3D的物体进行交互&#xff0c;得到接触的事件回调。 交互的两种方式&#xff1a; 1.直接抓取或者射线抓取物体&#xff0c;得到接触回调 2.射线或者手部触摸物体后&#xff0c;得到接触回调 准备工作 有了…

Android 10.0 设置默认launcher后安装另外launcher后默认Launcher失效的功能修复

1.前言 在10.0的系统rom定制化开发中,在系统中有多个launcher的时候,会在开机进入launcher的时候弹窗launcher列表,让用户选择进入哪个launcher,这样显得特别的不方便 所以产品开发中,要求用RoleManager的相关api来设置默认Launcher,但是在设置完默认Launcher以后,在安…

嵌入式软考备考_3 嵌入式操作系统概述

嵌入式操作系统概述 工作在嵌入式环境中的操作系统 Embedded Operating System。 嵌入式和一般操作系统区别&#xff1a; 非通用操作系统&#xff0c;用于完成特定功能&#xff1b;性能实时性能源可靠性要求高&#xff1b;占用资源少&#xff1b;可剪裁&#xff0c;可配置。…

渗透测试 | Web信息收集

0x00 免责声明 本文仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担…

《程序员面试金典(第6版)》面试题 16.04. 井字游戏(棋盘类问题,C++)

题目描述 设计一个算法&#xff0c;判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘&#xff0c;由字符" "&#xff0c;“X"和"O"组成&#xff0c;其中字符” "代表一个空位。 以下是井字游戏的规则&#xff1a; 玩家轮流将字符放入空位…

专门为麻醉科和手术室开发的:手术麻醉系统源码,系统稳定,功能完整,支持二次开发

手术麻醉系统源码&#xff1a;C# .net 桌面软件 C/S版 系统极其稳定&#xff0c;扩展性强&#xff0c;已在多家医院运营。 文末获取联系 手术麻醉信息管理系统是专门为麻醉科和手术室开发的围手术期临床信息管理系统&#xff0c;具备以下功能: 1.手术程管理系统整合了手术室、…

人工智能实践: 基于T-S 模型的模糊推理

模糊推理是一种基于行为的仿生推理方法, 主要用来解决带有模糊现象的复杂推理问题。由于模糊现象的普遍存在, 模糊推理系统被广泛的应用。模糊推理系统主要由模糊化、模糊规则库、模糊推理方法以及去模糊化组成, 其基本流程如图1所示。

C++(继承下)

目录&#xff1a; 1.继承与有元 2.继承与静态成员 3.单继承、多继承 4.如何定义一个不能被继承的类&#xff1f;&#xff1f; 5.分享有意思的一道题 6.菱形继承及菱形虚拟继承 --------------------------------------------------------------------------------------------…

【c语言】全局变量 | 局部变量的生命周期与作用域

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

亚马逊云科技赋能客户,为海思科打造安全高效的营销业务中台系统

羽翼渐丰&#xff0c;翱翔云端 携手亚马逊云科技&#xff0c;打造互联网级企业解决方案 秉承“为客户创造价值”的理念&#xff0c;在公司发展过程中&#xff0c;博智信息先后服务了众多知名企业&#xff0c;客户行业覆盖制造、零售、餐饮、科技、电子等。经过近20年的发展&a…

AutoGPT 是 prompt 工程的下一个前沿

前言 最近了解到Auto GPT的上线&#xff0c;下面我来整理一下整个体验过程&#xff0c;希望对大家有所帮助和启发。 首先Auto GPT是 OpenAI 的 Andrej Karpathy 都在大力宣传的一个开源项目&#xff0c;他认为 AutoGPT 是 prompt 工程的下一个前沿。 近日&#xff0c;AI 界貌…

自助式数据分析平台:jvs数据智仓-统计报表的使用条件及界面介绍

统计报表界面介绍 统计报表是指利用表格和报表等形式&#xff0c;将数据以清晰的结构和布局的方式呈现出来&#xff0c;以便用户进行数据分析和决策制定的一种BI统计方法。表格式的BI统计通常采用交叉表格、分组表、报表等形式&#xff0c;对数据进行整合、分析和展示&#xff…

【数据库数据恢复】ndf文件损坏的SQL SERVER数据库数据恢复案例

数据库数据恢复环境&#xff1a; 某公司存储上部署SQL SERVER数据库&#xff0c;数据库中有1000多个文件&#xff0c;该SQL SERVER数据库每10天生成一个NDF文件&#xff0c;数据库包含两个LDF文件。 数据库故障&分析&#xff1a; 存储设备出现故障导致SQL SERVER数据库异常…

IDEA实用设置

1、设置全局编码统一为UTF-8 file>setting中搜索框输入file encoding修改格式为UTF-8 2、设置文字大小 file>setting中搜索框输入font修改字体大小 3、配置maven file>setting中搜索框输入maven修改maven的路径、conf文件、文件仓库 4、idea中实现Serializable提示…

RabbitMQ通讯方式

RabbitMQ通讯方式 RabbitMQ提供了很多中通讯方式&#xff0c;依然可以去官方查看&#xff1a;https://rabbitmq.com/getstarted.html 七种通讯方式 1 RabbitMQ提供的通讯方式 Hello World!&#xff1a;为了入门操作&#xff01;Work queues&#xff1a;一个队列被多个消费者…

三十五、垃圾回收器

一、GC分类于性能指标 垃圾回收器的分类 1.串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾收集工作结束。 1)在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;串行回收器…

WRF模式应用:天气预报、模拟分析观测气温、降水、风场、水汽和湿度、土地利用变化、土壤及近地层能量水分通量、土壤、水体、植被等相关气象变量

查看原文>>>高精度气象模拟软件WRF(Weather Research Forecasting)技术及案例应用 目录 区域气候模式理论知识梳理 Linux操作系统WRF模式系统实际操作 模式调试及运行 模式操作及案例实践 实际应用及案例分析 Python在WRF模型自动化运行及前后处理中的实践技术…