浏览器缓存原理

news2024/11/24 12:21:17

使用 HTTP 缓存的好处:通过复用缓存资源,减少了客户端等待服务器响应的时间和网络流量,同时也能缓解服务器端的压力。可以显著的提升网站的应用性能。

HTTP 缓存策略分为两种:强制缓存、协商缓存。

强制缓存

浏览器缓存没有过期的时候可以直接决定使用缓存。
强制缓存可以通过两种响应头设置实现:
Expires和Cache-Control。

注意*:如果两个同时存在,Cache-Control优先级高于Expires。

在这里插入图片描述
Expires:设置过期时间。

流程:浏览器发出请求,服务器在返回资源的时候,会在响应头里添加expires这个字段,其值就是过期时间,浏览器拿到值之后就可以判断缓存有没有过期,如果没有过期,浏览器就直接获取缓存数据。如果过期返回新的数据和新的过期时间。

Cache-Control:设置过期时长,值为多少秒,相比过期时间就准确多了。

流程:浏览器发出请求,服务器在返回资源的时候,会在响应头里添加Cache-Control这个字段,其值就是过期时间,浏览器拿到值之后就可以判断缓存有没有过期,如果没有过期,浏览器就直接获取缓存数据。如果过期返回新的数据和新的过期时间。

协商缓存

每次请求需要让服务器判断一下资源是否更新过,从而决定浏览器是否使用缓存,如果是,则返回 304,否则重新完整响应返回200.

Last-Modified:值为最后修改时间。

流程:浏览器发送请求,然后服务器在返回资源的时候,在响应头里添加last-modified这个字段值为服务器资源的最后修改时间,然后浏览器在每次请求的时候都会带上上一次返回的最后修改时间,之后交给服务器,服务器拿到值去跟服务器当前的最后修改时间去做比对,如果比对没变化就告诉浏览器可以使用缓存并返回304状态,如果比对结果是资源已经更新了就给浏览器正常返回资源并返回状态200。

在这里插入图片描述
问题点:Last-Modifie是以秒级别记录的,如果资源正好在1秒内发生改变的话,Last-Modifie是无感知的,会以为没有变化,这样就出现问题了。

Etag:是服务器为每份资源生成的唯一标识,就像一个指纹,资源变化都会导致 ETag 变化,跟最后修改时间没有关系,ETag可以保证每一个资源是唯一的.

流程:浏览器发送请求,服务器根据文件内容生成唯一的标识,然后这个标识通过Etag字段值传给浏览器,浏览器以后每次请求的时候都会增加一个字段叫If-None-Match值为Etag的值,服务器拿到这个值会跟服务器当前的Etag做比对,比对没变化告诉浏览器可以用缓存返回304,如果比对结果已经更新了则返回新的资源并返回状态200.

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

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

相关文章

[pgrx开发postgresql数据库扩展]5.自定义函数与SQL组合应用

老规矩的声明: 并不是所有场景都需要(或者适合)用rust来写的,绝大部分操作数据库的功能和计算,用SQL就已经足够了! 本系列中,所有的案例,仅用于说明pgrx的能力,而并非是…

BPMN2.0 任务-用户任务

“用户任务(user task)”用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。 用户任务用左上角有一个小用户图标的标准任务(圆角矩形)表示。 用户任务在XML中如下定义。其中id是必须属性,name是可选属性…

提高网络安全性:探索ADAudit Plus的全功能IT安全审计解决方案

网络安全一直是组织和企业需要关注的重要问题之一,因为随着企业数字化的加速和技术的不断发展,网络攻击的威胁也变得越来越严峻。因此,组织和企业需要采取措施保护其信息资产和网络安全。 ADAudit Plus是一种全功能的IT安全审计解决方案&…

2023年商票研究报告

第一章 行业概况 1.1 定义 商票是指出票人依托商业汇票系统,以数据电文形式制作的,委托付款人在指定日期无条件支付确定的金额给收款人或者持票人的票据。按承兑人的不同,商业汇票分为银行承兑汇票和商业承兑汇票(即商票&#x…

flex布局 高度没有自动撑到max-height

在做一个项目时,用到了竖向flex布局,我写了max-height: 820px, 但是到小屏幕时,只能撑到773px,解决方法是height: max-content. 但是不知道为什么只能撑到773px便撑不动了。 https://zhuanlan.zhihu.com/p/130460207 这个文档说的…

workerman开发者必须知道的几个问题

1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程,cmd窗口关掉后服务即停止。 windows系统下无法在一个…

目标检测之损失函数

损失函数的作用为度量神经网络预测信息与期望信息(标签)的距离,预测信息越接近期望信息,损失函数值越小。 在目标检测领域,常见的损失分为分类损失和回归损失。 L1损失 L1 Loss也称为平均绝对值误差(MAE&…

[HNCTF 2022 WEEK4]ezheap

Index 前言Checksec & IDA 前言 手把手教学,覆盖一切途中会遇到的问题。 [HNCTF 2022 WEEK4]ezheap Checksec & IDA 保护全开,但是四肢健全(四项功能 增删改查),因此是ezheap。 主要来观察函数add和show。 d…

注意力机制:基于Yolov5/Yolov7的Triplet注意力模块,即插即用,效果优于cbam、se,涨点明显

论文:https://arxiv.org/pdf/2010.03045.pdf 本文提出了可以有效解决跨维度交互的triplet attention。相较于以往的注意力方法,主要有两个优点: 1.可以忽略的计算开销 2.强调了多维交互而不降低维度的重要性,因此消除了通道和权…

信号完整性分析基础知识之传输线和反射(三):仿真和测试反射波形

使用上面反射系数的定义,可以计算来自任意阻抗的反射信号。当终端阻抗为阻性元件时,阻抗恒定,反射电压容易计算。当终端具有更复杂的阻抗行为(例如电容性或电感性终端,或两者的某种组合)时,如果…

3.QT布局管理

布局管理系统 布局管理器 QLayout类继承图: 新建Qt Widgets项目mylayout,选择基类QWidget,类名MyWidget .ui拖用Font Combo Box、Text Edit,单击主界面,ctrlL,发现两个部件填满界面,运行后随…

Docker部署MySQL主从复制

文章目录 平台说明一、Docker创建网络二、创建MySQL主从容器1.拉取镜像2.查看镜像3.创建启动容器 三、主从配置1.主机配置文件2.从机配置文件3.注意事项4.重启容器5.连接主从数据库主机配置从机配置启动从机复制 四、测试主从复制 平台说明 操作系统:Windows 11 Do…

接口测试入门必会知识总结(学习笔记)

目录 什么是接口? 内部接口 外部接口 接口的本质 什么是接口测试? 反向测试 为什么说接口测试如此重要? 越接近底层的 Bug,影响用户范围越广 目前流行的测试模型 接口测试的优越性 不同协议形式的测试 接口测试工作场景…

『python爬虫』01. 爬虫入门的基础知识(保姆级图文)

目录 1. 合法性2. 爬虫原理3. 网站源代码查看4. 查看网络请求总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1. 合法性 查看网站的爬虫协议,简单介绍爬虫协议robots.txt,避免爬虫爬的好…

简单理解内存分页机制

文章目录 1.CPU寻址方式2.段式内存访问的缺点3.80386两级页表4.PAE三级页表5.x64四级页表6.虚拟内存 思考一个问题:如果没有这样的分页机制时应用程序是怎么访问物理内存地址? 1.CPU寻址方式 Effective Address Base (Index * Scale) Displacement …

加载自己的图像数据集

文章目录 1 加载图像数据集2 图像预处理3 再次加载数据集4 这里还有一个问题,我们没有验证集5 构建DataLoader6 检查是否正确导入数据集 原文链接:《加载自己的图像数据集》 ​ 数据集下载链接 1 加载图像数据集 目录结构: 针对这种非常典型…

Java+proj4j实现根据EPSG编码进行坐标系转换

场景 JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换: JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换_霸道流氓气质的博客-CSDN博客 上面使用GeoTools实现坐标系转换。 VueOpenlayersproj4实现坐标系转换: VueOpenlayersproj4实现坐标系转换_霸道流…

VUE3页面div点击改变样式

如题目所示。 用上VUE之后,前后端分离,组件式开发,代码复用、独立性和隔离性都挺好,可维护性得以提高。相比之下,以前用jQuery,代码实在太多了。 不过,vue有个地方不大好,就是控制…

算法基础(二)(共有30道例题)

六、数据结构 (一)数组 定义:数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。 注意: (1)数组下标都是从0开始的。 (2&#xff0…

【SWAT水文模型】SWAT水文模型建立及应用第二期:土地利用数据的准备(待更新)

SWAT水文模型建立及应用:土地利用数据的准备 1 简介2 土地利用数据的下载1.1 数据下载方式1.2 数据下载 2 土地利用数据的准备2.1 矢量转栅格2.2 土地利用类型的重分类2.3 土地利用分布图投影调整2.4 土地利用类型索引表建立 参考 SWAT水文模型建立及应用第一期主要…