0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于浏览器缓存最详细解析

jf_f8pIz0xS 来源:掘金 作者:foolBird 2021-04-16 16:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

简述

浏览器缓存即 http 缓存,将请求过的数据(html、css、js)存在浏览器(本地磁盘)中,当再次访问这些资源时可以从本地直接加载,减少服务端请求

服务端通过设置 http 响应头来决定缓存策略(缓存方式)

缓存流程

第一次请求需要的资源,服务器返回资源的同时在 response hearder 响应头中添加了缓存策略,告诉浏览器缓存规则(比如以何种方式缓存,缓存信息。。.。。.),此时就进行缓存了

第二次如果是请求相同资源,那么就会检查缓存里面是否有相应资源,有的话直接取用,具体方式请看后续

缓存位置

先谈谈缓存都会存在哪,然后引出缓存方式进一步说明

Service Worker

可以让我们自由控制缓存哪些文件、如何匹配/读取缓存,并且缓存是持续性的

离线缓存调用的就是 Service Worker

Memory Cache

内存中的缓存,关闭页面就会失效

Disk Cache

硬盘中的缓存

资源存进硬盘的情况

大文件(大概率)

此时内存利用率较高

Push Cache

推送缓存:以上三种缓存都没命中时,才启用

它只在会话(Session)中存在,会话结束就会释放,缓存时间很短

如果以上四种缓存都没被命中,就只能发起请求了。所以为了性能考虑,选择好缓存方式极为重要

缓存方式

缓存方式就两种

强缓存(默认优先)

协商缓存(协商,也就是商量的意思)

先介绍一个响应头中重要的值 Cache-Control,用于控制网页缓存,有如下主要取值

public:响应可以被客户端和代理服务器缓存

private(默认取值):响应只有客户端可以缓存

no-cache:直接进入协商缓存阶段

no-store:不进行任何缓存

max-age = xxx(xxx 代表数字):缓存内容在 xxx 时间后失效

must-revalidate:告诉浏览器

浏览器查看响应头的方法(新版 edge 为例):右键选择 “检查”,进入开发者模式,选择 “网络” ,选中具体选项(如果没有可以 f5 刷新页面),点击 “标头”

强缓存

概念:检查强缓存,不发送 http 请求直接从缓存里读取资源。一般强缓存都会设置有效时间,过期就失效

触发条件,Cache-Control 的值 max-age = xxx

响应头 Expires 存储缓存过期时间(如果修改本地时间会造成缓存失效)

协商缓存

概念:需要携带缓存标识(tag)发送 http 请求,由服务器判断是否使用缓存。服务端会进行判断,若资源已发生变化,则返回新资源,否则告诉浏览器启用缓存即可

触发条件(两个)

强缓存过期

Cache-Control 的值包含 no-cache

缓存标识由响应头 Last-Modified、ETag 决定(简述一下)AX

Last-Modified 用于记录资源最后修改时间,浏览器再次请求时用来对比时间,以此判断资源是否变化

ETag存储一个字符串(类似标识符),只要资源修改了标识符就会变动,以此判断资源是否变化

用户操作对缓存的影响

地址栏输入网址:浏览器会查找

点击刷新按钮或按 f5 刷新:会使用缓存

ctrl+f5 刷新:跳过缓存,直接请求新资源
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓存
    +关注

    关注

    1

    文章

    248

    浏览量

    27863
  • 浏览器
    +关注

    关注

    1

    文章

    1043

    浏览量

    37232
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    浏览器跨域窗口通信技术调研:window.open 与 postMessage

    浏览器跨域窗口通信技术调研:window.open 与 postMessage 本调研定位 :以 2aran.com 调研文章一键分发到 syncblog.cn 内容同步页 为具体案例,解释浏览器
    的头像 发表于 05-23 00:58 133次阅读

    瑞芯微(EASY EAI)RV1126B 安装浏览器

    1.概要安装浏览器,前提是需要把桌面系统给装起来。安装桌面系统的具体操作,可以参考此文《应用笔记/安装桌面系统》。2.安装步骤2.1环境准备通过串口调试进入板卡后台,并且确保板卡可以联网(接入互联网
    的头像 发表于 04-24 14:47 1178次阅读
    瑞芯微(EASY EAI)RV1126B 安装<b class='flag-5'>浏览器</b>

    京东缓存中间件架构与缓存内核优化

    一、京东缓存中间件架构 1、背景 在当今高并发、分布式的系统架构中,缓存已成为提升应用性能、降低数据库负载的核心组件。随着业务规模的扩大与系统复杂度的增加,缓存的使用和管理面临诸多挑战:部署模式多样
    的头像 发表于 04-03 16:18 1929次阅读
    京东<b class='flag-5'>缓存</b>中间件架构与<b class='flag-5'>缓存</b>内核优化

    VF2 Debian image 69 Web 浏览器失败,怎么修复?

    只需启动并运行图像 69。 $ ip 一个 显示互联网连接已建立良好。 单击以运行默认的Web浏览器时,会弹出一条错误消息。 “无法执行默认 Web 浏览器。” 输入/输出错误。 有什么提示需要修复吗?
    发表于 03-24 06:54

    KeepAlive:组件缓存实现深度解析

    了\') // 适合清除定时、暂停网络请求等 }) </script> 与普通生命周期的关系 被缓存的组件在切换时不会触发 unmounted 和 mounted,而是触发
    发表于 03-05 19:17

    无需安装!在浏览器里就能玩转ESP32/ESP8266,这个神器绝了!

    无需安装!在浏览器里就能玩转ESP32/ESP8266,这个神器绝了!【往期精选】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生态设备接入(含
    的头像 发表于 01-10 10:01 1829次阅读
    无需安装!在<b class='flag-5'>浏览器</b>里就能玩转ESP32/ESP8266,这个神器绝了!

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置?

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置? 如何掂让这个竖屏切换为横屏?
    发表于 12-20 20:10

    请问M453是否默认启用4kb缓存

    浏览 M453 的各种示例代码,我没有看到显式启用 4kb 缓存,那么缓存是否默认启用?
    发表于 08-28 08:27

    Microsoft Edge浏览器iOS端插件功能上线

    在最新发布的 139 版本中,Microsoft Edge 浏览器 iOS 端正式支持插件功能!与此同时,Microsoft Edge 安卓端的插件数量已跃升至近 30 款。广告拦截、双语翻译、资源下载……你的手机浏览器,也能拥有自定义的「超能力」。
    的头像 发表于 08-19 14:29 2216次阅读

    亚马逊云科技推出Amazon Nova Act SDK预览版,加速浏览器自动化Agent落地

    北京2025年8月5日 /美通社/ -- 亚马逊云科技日前宣布,推出Amazon Nova Act SDK有限预览版,可快速帮助客户将基于浏览器的Agent从原型部署至生产环境。该SDK可与亚马逊云
    的头像 发表于 08-06 08:42 1060次阅读

    本地缓存 Caffeine 中的时间轮(TimeWheel)是什么?

    我们详细介绍了 Caffeine 缓存添加元素和读取元素的流程,并详细解析了配置固定元素数量驱逐策略的实现原理。在本文中我们将主要介绍 配置元素过期时间策略的实现原理 ,补全 Caff
    的头像 发表于 08-05 14:48 758次阅读
    本地<b class='flag-5'>缓存</b> Caffeine 中的时间轮(TimeWheel)是什么?

    微软Microsoft Edge浏览器构筑立体式安全防线

    在信息爆炸的今天,钓鱼网站、诈骗广告、隐私追踪层出不穷。Microsoft Edge 浏览器为桌面与移动端用户构筑了立体式安全防线。用七大安全护盾,保护你的上网安全。
    的头像 发表于 08-04 15:39 1653次阅读

    性能再升级!开鸿Bot系列V4.1.2.78.002版本发布

    开鸿BotBook和开鸿BotMini迎来V4.1.2.78.002版本升级本次升级聚焦用户体验优化重点优化了系统功能、浏览器功能开发者体验功能等带来更流畅、更高效的操作体验01系统功能优化蓝牙耳机
    的头像 发表于 07-11 19:53 848次阅读
    性能再升级!开鸿Bot系列V4.1.2.78.002版本发布

    高性能缓存设计:如何解决缓存伪共享问题

    缓存行,引发无效化风暴,使看似无关的变量操作拖慢整体效率。本文从缓存结构原理出发,通过实验代码复现伪共享问题(耗时从3709ms优化至473ms),解析其底层机制;同时深入剖析高性能缓存
    的头像 发表于 07-01 15:01 961次阅读
    高性能<b class='flag-5'>缓存</b>设计:如何解决<b class='flag-5'>缓存</b>伪共享问题

    老电视如何安装浏览器

    2017年购买的夏普老电视,1.5G+8G存储,网上下的浏览器APK文件在电视内打开就弹出“解析程序包出现问题”。 未知来源选项已打开,存储空间清空到只剩下三个应用(只占用300M左右),基本可
    发表于 06-01 18:57