【前端】缓存相关

本知识页参考:https://zhuanlan.zhihu.com/p/586060532

1. 概述

1.1 应用场景

  1. 静态资源
    1. 场景:图片、CSS、JS 文件等静态资源
    2. 实现:使用 HTTP 缓存控制头,或者利用 CDN 进行边缘缓存
  2. 数据缓存
    1. 场景:请求的返回结果
    2. 实现:使用浏览器的本地存储(如 LocalStorage)、IndexedDB 或者第三方库/框架提供的缓存工具(如react-query)
  3. 页面缓存
    1. 场景:用户访问过的页面内容,尤其是SPA应用
    2. 实现:Vue中可以利用 keep-alive 组件
      1. keep-alive定义:抽象组件,用于缓存组件实例状态 - 而非销毁;实现状态保留避免重复渲染

        1. 提高性能,不必要的组件创建
        2. 不会渲染自己的DOM元素,也不会出现在组件链中
        3. 逻辑抽象
      2. 代码原理

        1. Vue2中(/Front/Note/封装框架知识/Vue/素材/Vue2特性.md)
        js 复制代码
        data() {
           return {
              cache: {}
           }
        },
        methods: {
           
        }
        1. Vue3中
        js 复制代码
        import { ref } from 'vue';
        export default {
           setup() {
              const cache
           }
        }
      3. 内部会使用缓存对象:Vue2-JS,Vue3-Map包裹实例

        1. 组件切到后台deactivated缓存,被激活activated时从缓存对象中恢复实例,而不是重新创建
        2. 更好的缓存模式
          1. include:指定哪些组件应该被缓存
            1. 接收字符串、数组或正则表达式作为参数,匹配组件的名称
              1.
            2. 绑定数字类型
          2. exclude:哪些组件不应该被缓存
          3. max:限制被缓存的最大组件实例数
      4. keep-alive原理

        1. 核心功能:一是render()确定要缓存的vNode及对应组件实例;二是cacheVNode()存储刚要缓存的实例

        2. render():Vue自带,不属于组件

          1. Vue自带的函数,不属于组件的methods。生成组件的虚拟DOM(VNode),决定如何渲染
            1. KeepAlive:特殊的抽象组件,Vue.js用于缓存
            2. 缓存组件实例和状态
          2. Vue内部实现
          js 复制代码
          <!--英文逗号-->
          <KeepAlive include="a, b">
             <component :is="view" />
          </KeepAlive>
          <!--正则表达式-->
          <KeepAlive :include="/a|b/">
             <component :is="view" />
          </KeepAlive>
          <!--数组-->
          <KeepAlive :include="['a', 'b']">
             <component :is="view" />
          </KeepAlive>
          <!--限制最大缓存数为10-->
          <KeepAlive :max="10">
             <component :is="view" />
          </KeepAlive>
          1. 组件
        3. 局部作用域
          1.

  4. Service Workers
    1. 场景:为了实现离线体验或加载提速,sw可以用来缓存应用的核心文件和数据
    2. 实现:Service Worker API 拦截请求并提供自定义的响应,从缓存中提供文件

1.2 缓存管理器

应用中设计一个缓存管理器,用来统一管理缓存的写入、读取和销毁等

  1. 步骤
    Step 1 :确定缓存类型,如静态资源、API 响应数据、应用程序状态等
    Step 2 :缓存策略,包括规则(何时缓存数据、何时更新、何时过期)和机制(决定使用哪种存储机制,如 LocalStorage、IndexedDB、内存、Service Workers 等)
    Step 3

2. 浏览器缓存

2.1 基本介绍

浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存,以便下一次访问时重复使用,节省带宽,提高访问速度,降低服务器压力

1.2

相关推荐
百万蹄蹄向前冲1 小时前
风扇转了一晚上MVP专家团翻车事故
前端·人工智能
默_笙1 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
Together_CZ2 小时前
DeepSeek-V4.1-Flash:Pushing the Limits of KV Cache Compression——推动 KV 缓存压缩的极限
缓存·llm·compression·kv cache·deepseek·v4.1-flash·推动 kv 缓存压缩的极限
linux_cfan2 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
kyriewen3 小时前
我扒了 10,221 条 JD:腾讯技术岗 75% 在要 AI
前端·人工智能·ai编程
郑州光合科技余经理3 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒4 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
Blanche15004 小时前
利用 RAG 为答疑机器人扩展知识范围
前端
天若有情6734 小时前
【纯前端小工具】公历生日转农历,批量查询每年农历生日对应的公历日期(GitHub Pages在线直接用)
前端·javascript·github pages·农历转换·lunisolar·网页小工具
SoonITer4 小时前
怎样构建一个 Agent-friendly 的网站
前端·agent