浏览器缓存

2022年全球市场微波等离子体CVD反应器总体规模、主要生产商、主要地区、产品和应用细分研究报告 据GIR (Global Info Research)调研,按收入计,2021年全球微波等离子体CVD反应器收入大约 百万美元,预计2028年达到 百万美元,2022至2028期间,年复合增长率CAGR为 %。 阅读详情

浏览器的缓存机制对于前端性能优化来说是一个非常重要的环节,浏览器的缓存主要分为两类:强缓存和协商缓存,下面我们将分别介绍下这两种缓存:

强缓存

浏览器在发起http请求时首先检查的就是强缓存,该缓存机制中是不需要发送请求的,主要是通过携带字段确认实现,在早期的http1.0阶段是通过Expires字段,后来的http1.1z中使用Cache-Control字段;

Expires

Expires是指过期时间,它存在服务器的响应头中,用来告诉浏览器在这个过期时间之前是不需要请求的,可以直接使用缓存内容,此时返回304状态码,如果超过过期时间则需要发送请求服务器响应。在这个实现机制中存在一个坑点就是服务器的时间和浏览器的时间可能不一致,这样就会导致过期时间不准确,所以后来的1.1中就抛弃了这个字段,使用了Cache-control字段。

Cache-Control

Cache-Control和Expires最大的区别是它不是采取的过期时间点,而是利用的过期时长,其中通过max-age属性来传达过期时长,如Cache-Control:max-age:3600,此时就表示在一个小时内都可以直接使用缓存内容。其中Cache-Control还有其他的属性,如:

  • public:表示客户端和代理服务器都可以进行缓存
  • private:表示只能客户端缓存
  • no-cache:表示跳过当前的强缓存,发起http请求,直接进入协商缓存
  • no-store:表示不进行缓存
  • s-maxage:表示针对代理服务器的缓存时间

如果在检查中强缓存失效了,则会发起请求,进入到协商缓存。

协商缓存

在强缓存失效后,浏览器会在请求头中携带缓存tag向服务器发起请求,服务器根据该tag值去判断是否使用缓存,其中tag字段分为Last-Modified和Etag

  • Last-modified

    表示最后修改时间,浏览器在向服务器发起请求后,服务器会在响应头中加上该字段,在浏览器下一次发送请求时,会在请求头中携带If-Modified-Since字段,该字段的值就是服务器传来的最后一次修改时间,服务器拿到这个字段值后会和自身的最后修改时间进行对比,如果该字段值小于最后修改时间,则返回304,告诉浏览器使用缓存内容,否则在返回200,新的资源。

  • Etag

    表示服务器根据当前文件资源内容生成的唯一标识,服务器在响应头中将该字段传递给浏览器,浏览器在下次请求时会将这个值作为If-None-match字段的内容并放到请求头中,服务器接收到If-None-Match后会跟服务器上的Etag进行对比,如果两者不一样,说明更新了,返回200,否则返回304,告诉浏览器使用缓存内容。

    两者对比:在精度上Etag是优于Last-modified的,因为Etag是根据资源文件内容生成的唯一标识,因为能准确感知到资源文件内容的变化,而Last-modified是通过时间点来感知,有可能1s内修改多次,此时就不能体现修改。在性能上Last-modified是优于Etag的,Last-Modified仅仅只是记录一个时间点,而 Etag需要根据文件的具体内容生成哈希值。

缓存位置

浏览器的缓存位置共有四种,按照优先级来说分别为:

  • Service Woker
  • Memory Cache
  • Disk Cache
  • Push Cache
Service Worker

它是使Js运行在主线程之外,虽然自己脱离了浏览器,无法访问dom元素,但是它可以实现离线缓存,消息推送等,其中离线缓存就是指Service Woker Cache,同时它也是PWA实现的重要机制。

Memory Cache

它是指内存缓存,它的效率是最快的,但是它的生命周期很短,当渲染进程结束后,它也就不复存在了。

Disk Cache

它是指硬盘缓存,它的存取效率会慢一些,但是它的存储容量和存储时长相对比较有优势。

Push Cache

推送缓存是http2中的内容,目前应用不是恨广泛,后续随着http2的推广,肯定会备受关注的

总结

浏览器在发送请求时,首先会检查强缓存,如果强缓存命中,则不需要发送请求,直接从缓存中获取资源数据,若是强缓存失效,则发送请求进入协商缓存,服务器通过浏览器请求头中Last-Modified和Etag字段进行检查,若是资源更新则返回新的资源数据,200状态码,否则返回304,告诉浏览器使用缓存资源数据即可。

大白话系列:什么是微服务 用大白话和实际例子来通俗易懂地告诉你什么是微服务~ 阅读详情

相关推荐

新手必看:LiteRadio 2c SE遥控器从开箱到飞行的完整指南(附常见问题解答)

本文为新手提供LiteRadio 2c SE遥控器的完整使用指南,涵盖从开箱到首飞的20个关键步骤。详细介绍了遥控器的功能设置、与无人机的对频技巧以及首飞注意事项,帮助用户快速掌握飞行控制,避免常见错误。特别适合无人机初学者阅读。

weixin_29209801的博客 380

Android 11 微信友盟分享报错 分享异常 Android 11及以上系统的手机需要使用FileProvider方式分享

微信分享朋友圈报错 分享异常 Android 11及以上系统的手机需要使用FileProvider方式分享 项目集成了友盟的分享,在Android 11系统手机上,微信分享朋友圈失败: 集成时以按文档配置了FileProvider,具体步骤: Android Manifest XML中添加 <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHid

developer_min的博客 1万+

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 662

Buffer和Cache的区别

缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。 缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写...

系统运维 286

微信DAT图片恢复全攻略:从文件定位到批量解密(附最新路径变化)

本文提供了一份详尽的微信DAT图片恢复指南,涵盖新旧版本文件路径变化解析、DAT文件定位方法以及批量解密操作步骤。针对微信图片加密存储为DAT格式的痛点,文章介绍了高效易用的图形化解密工具,帮助用户将加密文件快速还原为JPG、PNG等可查看格式,并强调了数据安全与隐私保护的重要性。

p4q5r6s7t的博客 744

c语言国际象棋(easyx图形库)

c语言实现的国际象棋,先放源码,有空再更 所有图形资源均来源于网络,侵删 #include <graphics.h> #include<stdio.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include <time.h> #define HEIGHT 800 #define WIDTH 1100 #define SIZE 100 #define true.

Betelgeuse13的博客 1914

友盟社会化分享+第三方登录 2022.03.28 最新版

主要通过集成友盟SDK+QQ/微信/新浪SDK实现分享和微信登录功能1、在build.gradle中添加友盟 " maven { url 'https://repo1.maven.org/maven2/'} "2、app 文件夹下build.gradle添加以下内容3、androidManifest.xml 配置4、包目录下创建 wxapi 目录 添加 WXEntryActivity.class 文件5、app 里面的 AndroidManifest.xml6、调用功能的对应Activity 配

腾飞吧! 2911

win11重装系统简易教程-小白也可以上手!

本文介绍一下win11系统重装的各个步骤,也作为记录供自己后面查看。附上我之前参考的一位知乎大神写的重装win10系统文章的地址本文用到的工具全部是,不需要下载第三方镜像文件(不是说这个不好,只是第三方的软件或镜像文件网上非常多,琳琅满目,小白需要筛选甄别,直接用官方的就比较省心,大神请自便~)

Sddqa的博客 1万+

浏览器/HTTP缓存(强缓存、协商缓存策略)

注意:浏览器缓存与浏览器本地存储不是同一个概念!! 资源缓存的位置: 1. Service Worker:Service Worker 运行在 JavaScript 主线程之外,虽然由于脱离了浏览器窗体无法直接访问 DOM,但是它可以完成离线缓存、消息推送、网络代理等功能。 2. Memory Cache: Memory Cache 就是内存缓存,它的效率最快,但是内存缓存虽然读取高效,可是缓存持续性很短,会随着进程的释放而释放。一旦我们关闭 Tab 页面,内存中的缓存也就被释放了。 3. Di

小白目的博客 3910

LPDDR5时序精调:深入解析Read Gate Training的两种模式

本文深入解析了LPDDR5内存中关键的Read Gate Training技术,详细对比了RDQS Toggle Mode(翻转模式)与Enhanced RDQS Mode(增强模式)的工作原理、时序参数及适用场景。文章阐述了在高速数据传输下精准校准时序的必要性,并提供了两种模式的实战选型指南与系统级调试思路,帮助工程师优化内存性能与稳定性。

weixin_29219189的博客 368

第12步 支持向量机(SVM)

搭建SVM

Jet4505的博客 1051

如何看内存占用情况,vue反复操作tab标签页面内存一直在涨,系统反应越来越慢,内存快占用1个G...

按F2,打开Memory 方法一:刷新页面 方法二:关闭浏览器重新打开 1.加载快慢跟接口多少有关系,检查接口不要重复,接口尽量的少调,一个500ms的接口大概消耗5M内存 2.watch监听问题 chrome Memory 介绍 打开控制台上的Memory面板。 选择堆快照类型。我一般是使用前两种:Heap snapshot(JS堆快照)和Allocation instrumenta...

jyf_568的博客 5642

智能化教育改革中的教师角色转变:AI应用架构师如何设计“人机协同”系统?

个性化与规模化的矛盾:如何用AI实现规模化的个性化学习,同时保留教师的“人文温度”?自动化与自主性的矛盾:如何用AI自动化流程(如批改),同时避免教师沦为“AI操作工人”?数据驱动与经验驱动的矛盾:如何平衡AI的“数据决策”与教师的“经验决策”,避免“算法偏见”或“经验固化”?在智能化教育改革中,教师始终是教育的核心——AI系统是“辅助工具”,而非“替代者”。

小白菜的博客 1269

浏览器缓存、HTTP缓存(强缓存、协商缓存),浏览器缓存和CDN的关系

浏览器将请求过的资源(html、js、css、img)等,根据缓存机制,拷贝一份副本存储在浏览器的内存或者磁盘上。如果下一次请求的url相同时则根据缓存机制决定是读取内存或者磁盘上的数据还是去服务器请求资源文件。缓存通过url来判断,如果url不同则是新的资源。所以我们开发时前端会将一些js、css等文件在后面加hash值来避免资源更新时浏览器仍读取缓存文件,导致需要刷新才能获取新的资源的问题。 CDN的定义 客户端访问网站的过程 浏览器缓存+CDN缓存 no-cache与no-store的区别 304

muzidigbig的博客 4294

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【浏览器】浏览器缓存

一 浏览器缓存机制 浏览器在每次发生请求时,先在在浏览器缓存中查找该请求的结果和缓存标识,并且每次收到请求结果均会把请求结果和缓存标识保存在浏览器缓存中。 浏览器缓存策略分类 缓存策略的分类: 强缓存:不会向服务器发送请求,直接从缓存中读取资源。 协商缓存:强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程 缓存策略通过设置HTTP Header来实现的。 - 获取资源形式 状态码 发送请求到服务器 相关设置字段 强缓存 从缓存取 200(f

ColdCoder的博客 2311

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

浏览器缓存原理总结

一、浏览器缓存基本认识 分为强缓存和协商缓存 1、浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器。 2、当强缓存没有命中的时候,...

javafirst 6351

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【前端浏览器】浏览器缓存(http缓存) && 浏览器本地存储(总结)

浏览器缓存 && 浏览器本地存储(总结) 文章目录浏览器缓存 && 浏览器本地存储(总结)一、浏览器缓存(http缓存)相关术语1. 对浏览器的缓存机制的理解2. 浏览器资源缓存的位置有哪些?3. 协商缓存和强缓存的区别(http缓存、缓存策略、缓存过程)(1)强缓存ExpiresCache-Comtrol(2)协商缓存Last-Modify/If-Modify-SinceETag/If-None-Match(3)既生Last-Modified何生Etag?4. 为什么需要浏

前端学习博客 5126

浏览器缓存!!!

强缓存策略和协商缓存策略在缓存命中时都会直接使用本地的缓存副本,区别只在于协商缓存会向服务器发送一次请求。它们缓存不命中时,都会向服务器发送请求来获取资源。在实际的缓存机制中,强缓存策略和协商缓存策略是一起合作使用的。浏览器首先会根据请求的信息判断,强缓存是否命中,如果命中则直接使用资源。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。

m0_74316302的博客 2023

六、浏览器缓存

浏览器缓存是一种提高Web应用性能的技术,通过存储已经访问过的资源(如HTML、CSS、JavaScript文件、图片等),减少重复请求,加快页面加载速度。本文将简要介绍浏览器缓存的基本概念、类型、工作原理以及常见的缓存策略。

weixin_45511682的博客 1102

浏览器缓存--浏览器三级缓存

①强缓存不发送请求到服务器,协商缓存发送请求到服务器②强缓存资源更新浏览器不知道,因为没有发送请求到服务器;协商缓存资源更新浏览器都知道,因为发送了请求到服务器③大部分web默认用协商缓存。

weixin_45705239的博客 1492

浏览器的缓存机制

浏览器缓存是提升网页性能的核心机制,它通过存储资源副本(如HTML、CSS、JS、图片等),在后续请求时直接复用本地资源。

sissizZ的博客 1125

浏览器的缓存

浏览器缓存是指浏览器在访问网页时将一些数据(如HTML、CSS、JavaScript文件、图像等)存储在客户端本地的临时存储空间中。这样,在用户再次访问同一个页面时,浏览器可以直接从缓存中加载这些数据,而无需重新从服务器下载。提升性能和加快加载速度:通过使用缓存,浏览器避免了重复下载相同的资源文件,减少了服务器的负担和网络传输时间,从而加快了页面加载速度。减少网络流量和节省带宽。

weixin_50012993的博客 1463

浏览器缓存机制

浏览器缓存问题,知识点

程序媛的博客 3217

浏览器缓存详解

引言 其实关于浏览器缓存的内容网上已经不胜枚举,之所以产出本文的目的是,遇到缓存相关的问题后,在网上看到的所有相关内容大都雷同对细节的描述都不够全面。因此阅读了缓存相关的RFC文档及浏览器内核的实现文档等对缓存相关内容进行整理。 在了解浏览器缓存之前,我们不妨先谈谈缓存的意义。这里引用RFC文档上的一句话:缓存如果不能用以提升性能,那么它就毫无用处。以HTTP缓存为例,如果缓存未过期那么就减少了网络请求,如果缓存通过验证那么就减少了传输资源大小。而关于过期与验证机制的讲解将在下文中展开。 顺便一提,本文详细

riddle1981的博客 1258
上一篇: JS 字符串
下一篇: promise.all&&race
炸鸡大叔
博客等级 码龄11年 90粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值