KeepAlive 组件缓存原理:怎么有效管理组件实例并提升切换性能?

秋强君_4336

秋强君_4336

2026-07-23

864人浏览

原创

vue 的 keep-alive 通过内存保活组件实例实现高效缓存,核心是保留响应式数据、vnode 和 dom 引用;支持 include/exclude 白名单/黑名单匹配及 lru 淘汰策略,并提供 onactivated/ondeactivated 钩子同步状态。

keepalive 组件缓存原理:怎么有效管理组件实例并提升切换性能?

不是简单地“记住组件”,而是通过一套轻量但严谨的内存管理机制,把组件实例真正保活下来,让切换变成“唤醒”而非“重建”。

缓存的核心是实例,不是 DOM

Vue 在组件被 包裹后,不会调用其 unmount 流程。取而代之的是:

  • 把整个组件实例(包括响应式数据、计算属性、方法、内部状态)完整保留在内存中
  • 保留其已生成的虚拟节点(vnode)和真实 DOM 引用
  • 将该实例存入一个 Map 缓存池,键通常是组件 name 或 key,值是 vnode

这样下次激活时,Vue 直接复用这个实例,跳过 setup、created、mounted 等初始化阶段,渲染也基于已有 vnode 快速 patch。

精准控制哪些组件进缓存池

靠 include 和 exclude 两个 props 实现白名单/黑名单逻辑:

  • 组件必须声明 name 选项(或通过 key 显式指定),否则无法匹配
  • include 支持字符串(如 "UserDetail")、正则(/Detail$/)、数组(["Home", "Profile"])
  • exclude 优先级高于 include,一旦命中就直接绕过缓存
  • 两者都未设置时,默认缓存所有子组件

限制缓存数量,避免内存泄漏

H2O EvalGPT
H2O EvalGPT

H2O EvalGPT是一款AI模型评测工具,H2O.ai 推出的基于 Elo 评级方法的大语言模型评估系统。

下载

max 属性启用 LRU(最近最少使用)淘汰策略:

  • 内部维护一个 keys 数组,按访问顺序记录缓存项
  • 当新组件加入且总数超限,自动移除数组开头(最久未用)的缓存项
  • 移除时会触发组件的 unmounted 钩子,释放资源(如定时器、事件监听)

配合生命周期钩子做状态同步

缓存让组件“不死”,但也带来状态陈旧风险:

  • onActivated:组件从缓存中恢复时触发,适合重新拉取最新数据、重置局部 UI 状态
  • onDeactivated:组件进入缓存前触发,适合清理副作用(清除定时器、暂停视频、保存草稿)

比如商品详情页切换回来时,在 onActivated 中检查当前 ID 是否变化,必要时 refetch;在 onDeactivated 中暂停轮播图自动播放。

不复杂但容易忽略

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2183

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4663

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5810

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5258

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

743

5

vue2.0和3.0区别
vue2.0和3.0区别

vue2.0和3.0区别:vue2的响应式原理是利⽤“Object.defineProperty()”对数据进⾏劫持结合发布订阅模式的⽅式来实现,vue3中使⽤了es6的proxy API对数据代理,实现对数据的监控。本专题为大家提供vue2.0和3.0区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.17

1614

5

vue3的生命周期有哪些
vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deactivated等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

11762

5

Vue3组合式API与组件开发实战
Vue3组合式API与组件开发实战

本专题讲解 Vue 3 组合式 API 的核心概念与应用技巧,深入分析响应式系统、生命周期管理、组件设计与复用策略。通过完整项目案例,指导前端开发者实现高性能、结构清晰的 Vue 应用,提升开发效率与代码可维护性。

2026.02.10

276

23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习