3分钟带你了解前端缓存-HTTP缓存

前情提要
前端缓存分为下面三大类,本文主要讲解HTTP缓存~
1. HTTP缓存
- 强缓存
- 协商缓存
2. 浏览器缓存
- 本地小容量缓存
- 本地大容量缓存
3. 应用程序缓存
- HTML5应用程序缓存
缓存作用
- 减少了冗余的数据传输
- 减少服务器的负担
- 提高了网站的性能
- 加快加载网页速度
什么是 HTTP 缓存 ?
- 用户想要浏览页面,浏览器会先查找浏览器缓存,如果没有缓存就去远端服务器请求
- 常见的 HTTP 缓存只能缓存 get 请求响应的资源
HTTP 缓存分类( 强制缓存,协商缓存 )
- 强制缓存不需要再和服务器发生交互,
- 对比缓存不管是否生效,都需要与服务端发生交互
- 两类缓存规则可以同时存在,强制缓存优先级高于对比缓存
强制缓存
- 在第一次访问服务器拿到数据以后,在过期时间之内不会再去重复发送请求
- 在缓存数据未失效的情况下,可以直接使用缓存数据
- 判断缓存数据是否失效: 首次数据请求后,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。
对比缓存
- 浏览器首次请求数据时,服务器会将缓存标识与数据一起返回给客户端。
- 再次请求数据时,客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,返回304状态码可以使用缓存数据或者是返回新的数据。
强制缓存header头
强制缓存相关的 header 头属性有以下2种:
- Cache-Control
- Expires
区别
- 在HTTP1.0和HTTP1.1版本中强制缓存通过不同的响应头字段实现,在1.0版本中,强制缓存通过Expires响应头来实现,在1.1版本中,强制缓存通过Cache-Control响应头来实现, HTTP1.1版本的实现优先级会高于HTTP1.0
- Cache-Control与Expires 都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据,如果同时设置的话,其优先级高于Expires
Cache-Control
- private 默认,客户端可以缓存,若设置max-age, 缓存期间不访问服务器.
- public 客户端和代理服务器都可以缓存
- max-age=60 缓存内容将在60秒后失效
- no-cache 需要使用对比缓存验证数据,强制向源服务器再次验证,若设置max-age, 缓存期间不访问服务器.
- no-store 所有内容都不会缓存,强制缓存和对比缓存都不会触发,不能缓存, 临时文件夹中也不能暂存该资源

协商缓存header头
协商缓存相关的 header 头属性有以下2种:
- ETag/If-Not-Match
- Last-Modified/If-Modified-Since

区别
- HTTP1.0中,首次请求得到缓存标识为Last-Modified,值为资源最后修改时间,再次请求,请求头携带If-Modified-Since,服务端对比时间来决定返回结果。
- HTTP1.1中,服务器通过Etag来设置响应头缓存标识,首次请求,返回资源和Etag,浏览器本地缓存,再次请求,浏览器会将Etag信息放到If-None-Match请求头去访问服务器,服务端对比差异来决定返回结果。
总结
- HTTP 缓存从二次请求开始。首次请求,服务器返回资源,并在respone header 头中回传资源的缓存参数
- HTTP 二次请求时,浏览器判断这些请求参数,命中强缓存就直接 200,否则就把请求参数加到 request header 头中传给服务器,看是否命中协商缓存,命中则返回 304,否则服务器会返回新的资源
- 强缓存只有首次请求跟服务器通信,读取缓存资源时不发任何请求,状态码为200
- 协商缓存每次请求都与服务器交互,如果命中缓存,状态码为304
今天就写到这里啦~
- 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~
相关文章:
3分钟带你了解前端缓存-HTTP缓存
前情提要 前端缓存分为下面三大类,本文主要讲解HTTP缓存~ 1. HTTP缓存 强缓存协商缓存 2. 浏览器缓存 本地小容量缓存本地大容量缓存 3. 应用程序缓存 HTML5应用程序缓存 缓存作用 减少了冗余的数据传输减少服务器的负担提高了网站的性能加快加载网页速度 …...
【多线程 - 03、线程的生命周期】
生命周期 当线程被创建并启动以后,它不是一启动就进入执行状态,也不会一直处于执行状态,而是会经历五种状态。 线程状态的五个阶段: 新建状态(New)就绪状态(Runnable)运行状态&…...
excel表的筛选后自动求和
一般都使用subtotal函数。 通过看一个大佬的视频,发现可以有更简单的方法。 首先任意筛选数据(ctrlshiftl), 然后选中需要求和的列的最下方的空白单元格,再按alt。 回车即可。 实质它还是用的subtotal函数...
2311rust特征
Rust无成本抽象 Rust中抽象基石是trait: 1,Trait是Rust中唯一的接口概念.多个类型可实现一个特征,事实上,可为现有类型提供新的特征实现.另一方面,想抽象未知类型时,找特征就行了. 2,与C模板一样,可静态分发特征. 3,可动态分发特征.有时确实需要间接,所以不必运行时"擦除…...
原型模式 rust和java的实现
文章目录 原型模式介绍优点缺点使用场景 实现java 实现rust 实现 rust代码仓库 原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当…...
阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller
在k8s上安装apisix全家,通过helm安装很简单,但是会遇到一些问题。 安装 首先登录阿里云控制台,在ACK集群详情页,进入CloudShell,执行下面helm命令安装apisix、apisix-ectd、apisix-dashboard和apisix-ingress-contro…...
vue+mongodb+nodejs实现表单增删改查
ExpressMongodbVue实现增删改查 效果图 前言 最近一直想学下node,毕竟会node的前端更有市场。但是光看不练,感觉还是少了点什么,就去github上看别人写的项目,收获颇丰,于是准备自己照葫芦画瓢写一个。 作为程序员,一…...
SpringBootWeb案例——Tlias智能学习辅助系统(3)——登录校验
前一节已经实现了部门管理、员工管理的基本功能。但并没有登录,就直接访问到了Tlias智能学习辅助系统的后台,这节来实现登录认证。 目录 登录功能登录校验(重点)会话技术会话跟踪方案一 Cookie(客户端会话跟踪技术)会话跟踪方案二…...
hive和spark-sql中 日期和时间相关函数 测试对比
测试版本: hive 2.3.4 spark 3.1.1 hadoop 2.7.7 1、增加月份 add_months(timestamp date, int months)add_months(timestamp date, bigint months)Return type: timestampusage:add_months(now(),1) 2、增加日期 adddate(timestamp startdate, int days)…...
Cell和RefCell
Cell和RefCell CellRefCellRefCell在运行时记录借用结合Rc和RefCell来拥有多个可变数据所有者引用循环与内存泄漏制造引用循环避免引用循环:将Rc变为Weak创建树形数据结构:带子节点的Node增加从子到父的引用可视化strong_count 和 weak_count 的改变 Rus…...
DaoWiki(基于Django)开发笔记 20231113
DaoWiki(基于Django)开发笔记 20231113 开发环境 操作系统 windows11python版本 3.12.0django版本 4.2.7 构建python虚拟环境 python -m venv daowiki启动python虚拟环境 cd daowiki\Scripts .\activate安装Django pip install django4.2.7创建项目…...
照片放大软件 Topaz Gigapixel AI mac中文版简介
Topaz Gigapixel AI mac是一款使用人工智能功能扩展图像的桌面应用程序,同时添加自然细节以获得惊人的效果。使用深度学习技术,A.I.Gigapixel™可以放大图像并填写其他调整大小的产品遗漏的细节,使用A.I.Gigapixel™,您可以裁剪照…...
某手游完整性校验分析
前言 只是普通的单机手游,广告比较多,所以分析处理了下,校验流程蛮有意思的,所以就分享出来了 1.重打包崩溃处理 样本进行了加固,对其dump出dex后重打包出现崩溃 ida分析地址发现为jni函数引起 利用Xposed直接替换…...
【ElasticSearch】学习使用DSL和RestClient编写查询语句
文章目录 DSL和RestClient的学习前言1、DSL查询文档1.1 查询分类1.2 全文检索查询1.21 全文检索概述1.2.2 基本使用 1.3 精确查询1.3.1 term查询1.3.2 range查询 1.4 地理坐标查询1.4.1 geo_bounding_box查询1.4.2 geo_distance查询 1.5 复合查询1.5.1 常见相关性算法1.5.2 算分…...
asp.net外卖网站系统VS开发mysql数据库web结构c#编程Microsoft Visual Studio
一、源码特点 asp.net外卖网站系统 是一套完善的web设计管理系统,系统采用mvc模式(BLLDALENTITY)系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为mysql,使用c#语…...
2.4.0 Milky Way 强势登场!新功能大爆炸,让你High翻全场!
Yo开发达人们,我们有重磅新功能要给你们放送啦! Check it out 数据汇总不再单调,新的聚合函数登场! compact_state_agg #1359gauge_agg #1370first #1395last #1413mode #1440increase #1476delta #1395time_delta #1405rate #14…...
C语言----静态链接库和动态链接库
在前面的文章中讲到可执行程序的生成需要经过预处理,编译,汇编和链接四个步骤,链接阶段是链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。 需要解读一下库文件,我们可以将库文件等价为压缩包文件&…...
PCA(主成分分析)数据降维技术代码详解
引言 随着大数据时代的到来,我们经常会面临处理高维数据的问题。高维数据不仅增加了计算复杂度,还可能引发“维度灾难”。为了解决这一问题,我们需要对数据进行降维处理,即在不损失太多信息的前提下,将数据从高维空间…...
Git版本控制系统之分支与标签(版本)
目录 一、Git分支(Branch) 1.1 分支作用 1.2 四种分支管理策略 1.3 使用案例 1.3.1 指令 1.3.2 结合应用场景使用 二、Git标签(Tag) 2.1 标签作用 2.2 标签规范 2.3 使用案例 2.3.1 指令 2.3.2 使用示例 一、Git分支&…...
JSP运行环境搭建
将安装JSP引擎的计算机称作一个支持JSP的Web服务器。这个服务器负责运行JSP,并将运行结果返回给用户。 JSP的核心内容之一就是编写JSP页面,JSP页面是Web应用程序的重要组成部分之一。一个简单Web应用程序可能只有一个JSP页面,而一个复杂的Web应用程序可能由许多JSP…...
被遗忘的宝藏:深度挖掘一款停更20年的神器——拖把更名器
在软件的海洋中,有这样一类特殊的存在:它们并非出自大公司之手,也没有大规模的商业推广,却凭借着优秀的设计和实用的功能,在用户中口口相传。 它们可能已经停更多年,在主流软件平台上难觅踪迹,但…...
JMS, ActiveMQ 学习一则唾
开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…...
从 Rule、Spec 到 Harness:AI Coding 的渐进式建设路径
文章目录前言第一阶段:Rule —— 给 AI 立规矩,就像教小孩认字第二阶段:Spec —— 先写文档再写代码,就像盖房子先画图纸第三阶段:Harness —— 自动验证与反馈,就像给 AI 配了个质检员这三个阶段是啥关系&…...
GPT-6曝光4月14日发布:性能暴涨40%,200万Token,AI真正进入能干活时代
4月14日,OpenAI将发布迄今最强大的AI模型多个独立消息源已确认:OpenAI下一代旗舰模型GPT-6,代号"Spud"(土豆),预计在2026年4月14日正式发布。核心数据:相比GPT-4o性能提升超40%&#…...
世界第一个开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf魄
1. 智能软件工程的范式转移:从库集成到原生框架演进 在生成式人工智能(Generative AI)从单纯的文本生成向具备自主规划与执行能力的“代理化(Agentic)”系统跨越的过程中,.NET 生态系统正在经历一场自该平台…...
如何快速掌握MuseTalk:实时高质量AI唇同步的完整实践指南
如何快速掌握MuseTalk:实时高质量AI唇同步的完整实践指南 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk MuseTalk是一款由腾讯音乐娱…...
3个理由告诉你,为什么Mac用户需要Turbo Boost Switcher这个终极性能控制工具
3个理由告诉你,为什么Mac用户需要Turbo Boost Switcher这个终极性能控制工具 【免费下载链接】Turbo-Boost-Switcher Turbo Boost disabler / enable app for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/tu/Turbo-Boost-Switcher Turbo Boost Switc…...
IOSSecuritySuite 最佳实践:避免常见陷阱的7个关键点
IOSSecuritySuite 最佳实践:避免常见陷阱的7个关键点 【免费下载链接】IOSSecuritySuite iOS platform security & anti-tampering Swift library 项目地址: https://gitcode.com/gh_mirrors/io/IOSSecuritySuite 在iOS应用开发中,安全防护是…...
批量设计元素替换:提升设计师效率的智能工作流解决方案
批量设计元素替换:提升设计师效率的智能工作流解决方案 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在现代UI设计和品牌视觉开发流程中,设计师经常面临需…...
最新付费进群系统源码 V4.1全开源版本源码 附教程
内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 最新付费进群系统源码 V4.1全开源版本源码 附教程 亲测可用 付费进群系统是一种基于互联网的社群管理工具,用户通过支付一定费用后获得加入特定群组的权限。这种系统通常用于知识分享、资源下…...
