浏览器缓存机制(一):概述

简介: 浏览器缓存机制(一):概述

前言

网络异常,图片无法展示
|

浏览器缓存机制按照缓存位置可以划分为:

  1. Memory Cache
  2. Service Worker Cache
  3. Disk Cache
  4. Push Cache

Memory Cache

什么资源会被存到内存里?对此没有特定的规则。但一般来讲,浏览器秉承的是“节约原则”。

比如,Base64 格式的图片,基本是在 memory cache里;

此外,体积不大的 JS、CSS 文件,也有较大地被写入内存的几率,而较大的 JS、CSS 文件往往被直接甩进磁盘。

Service Worker Cache

Service Worker

Service Worker 是一种独立于主线程之外的 Javascript 线程。脱离于浏览器窗体,因此无法直接访问 DOM。

这样独立的个性使得 Service Worker 的“个人行为”无法干扰页面的性能,这个“幕后工作者”可以帮我们实现离线缓存、消息推送和网络代理等功能。

借助 Service worker 实现的离线缓存就称为 Service Worker Cache。

PWA(Progressive Web Apps)

网页离线可用的原理:监听fetch事件拦截网络请求并从缓存中获取资源。

Service Worker 在传统网页中的使用也正是渐进增强手段的体现,使用PWA方案能够在一定程度上优化交互体验,比如twitter使用了PWA方案之后,用户驻留数据得到极大提升。

HTTP Cache

缓存机制之HTTP缓存

Push Cache

缓存的获取顺序

内存缓存>磁盘缓存>网络请求(http缓存)

缓存存储优先级

网络异常,图片无法展示
|
不同的资源,浏览器会将其缓存在不同的位置。且内存里读取资源会比磁盘里读取速度更快。存储优先级没有什么特定的规则,但是可以根据经验得出以下结论:

  • base64的图片:内存缓存
  • CSS资源:磁盘缓存(CSS文件加载一次就可渲染出来,不会频繁读取它,所以不适合缓存到内存里)
  • JS文件或图片资源(非base64):取决于加载的时间
  • 其他:大部分放在磁盘中



相关文章
|
5月前
|
缓存 Java 数据库连接
一篇文章讲明白hiberbnate缓存策略概述
一篇文章讲明白hiberbnate缓存策略概述
35 1
|
6月前
|
存储 缓存 Java
【干翻Mybatis源码系列】Mybatis缓存方案第一篇 之 Mybatis缓存方案概述
【干翻Mybatis源码系列】Mybatis缓存方案第一篇 之 Mybatis缓存方案概述
|
网络协议 流计算
深入理解浏览器内核 - 概述
深入理解浏览器内核 - 概述
141 0
|
存储 缓存 Windows
磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式
磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式
280 0
|
存储 XML 缓存
Spring Cache-缓存概述及使用
Spring Cache-缓存概述及使用
161 0
|
存储 缓存 搜索推荐
微服务实践01--微服务管理11--缓存00--概述
微服务实践01--微服务管理11--缓存00--概述
134 0
|
存储 缓存 Android开发
【精简版】浏览器渲染机制(完整流程概述)(下)
【精简版】浏览器渲染机制(完整流程概述)(下)
344 0
|
存储 JavaScript 前端开发
【精简版】浏览器渲染机制(完整流程概述)(上)
【精简版】浏览器渲染机制(完整流程概述)(上)
260 0
|
存储 SQL 缓存
浏览器数据库 IndexedDB(一) 概述
IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。
510 0
浏览器数据库 IndexedDB(一) 概述
|
存储 缓存 前端开发
【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述
最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。
108 0
【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述