keep-alive原理

它提供了include与exclude两个属性,允许组件有条件地进行缓存。

作用: 在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性。

它有两个生命周期
activated: keep-alive组件激活时调用
deactivated: keep-alive组件停用时调用

1、首先获取组件的key

2、拿到key值后去this.cache对象中去寻找是否有该值,如果有则表示该组件有缓存,即命中缓存

3、直接从缓存中拿 vnode 的组件实例,此时重新调整该组件key的顺序,将其从原来的地方删掉并重新放在this.keys中最后一个

this.cache对象中没有该key值的情况:

1、表明该组件还没有被缓存过,则以该组件的key为键,组件vnode为值,将其存入this.cache中,并且把key存入this.keys

2、此时再判断this.keys中缓存组件的数量是否超过了设置的最大缓存数量值this.max,如果超过了,则把第一个缓存组件删掉

【keep-alive原理】相关推荐

  1. Rocksdb 写流程,读流程,WAL文件,MANIFEST文件,ColumnFamily,Memtable,SST文件原理详解

    文章目录 前言 Rocksdb写流程图 WAL 原理分析 概述 文件格式 查看WAL的工具 创建WAL 清理WAL MANIFEST原理分析 概述 查看MANIFEST的工具 创建 及 清除 MANI ...

  2. libev源码解析——定时器原理

    本文将回答<libev源码解析--I/O模型>中抛出的两个问题.(转载请指明出于breaksoftware的csdn博客) 对于问题1:为什么backend_poll函数需要指定超时?我们 ...

  3. 内存泄漏的定位与排查:Heap Profiling 原理解析

    系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败,这就是典型的内存泄漏问题.这类问题通常难以预测,也很难通过静态代码梳理的方式定位.Heap Profiling 就是帮助我们解决此类问题的 ...

  4. python web框架autoreload原理(以bottle为例)

    2019独角兽企业重金招聘Python工程师标准>>> 这两天在看bottle的时候,发现它也有代码auto reload的功能,就到它的源码中看了一下. 当设置reloader=T ...

  5. Spark源码阅读02-Spark核心原理之调度算法

    Spark核心原理之调度算法 Spark核心原理之调度算法 应用程序之间 作业及调度阶段之间 1.创建调度池 2.调度池加入调度内容 3.提供已排序的任务集管理器 任务之间 1.数据本地性 2.延迟执 ...

  6. Elasticsearch分布式一致性原理剖析(一)-节点篇

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: ES目前是最流行的开源分布式搜索引擎系统,其使用Lucene作为单机存储引擎并提供强大的搜索查询能力.学习其搜索原理, ...

  7. Android10.0 BroadcastCast广播机制原理

    原文地址:https://skytoby.github.io/2019/BroadcastCast%E5%B9%BF%E6%92%AD%E6%9C%BA%E5%88%B6%E5%8E%9F%E7%90 ...

  8. SSH原理之图文详解

    一.Telnet和SSH 1.Telnet        Telnet是一个远程连接服务是一个C/S架构,具有Server端和Client端,Client通过telnet协议连接到服务器端,这是早期常 ...

  9. 超高性能管线式HTTP请求(实践·原理·实现)

    这里的高性能指的就是网卡有多快请求发送就能有多快,基本上一般的服务器在一台客户端的压力下就会出现明显延时. 该篇实际是介绍pipe管线的原理,下面主要通过其高性能的测试实践,解析背后数据流量及原理.最 ...

  10. Spark详解(四):Spark组件以及消息通信原理

    1. Spark核心基本概念 Application(应用程序):指用户编写的Spark应用程序,包含驱动程序(Driver)和分布在集群中多个节点之上的Executor代码,在执行过程中由一个或多个 ...

最新文章

  1. AI 时代,还不了解大数据?
  2. Kettle性能调优汇总
  3. 不同存储区域的数组分析
  4. 一篇博客读懂设计模式之---委派模式
  5. 搭建简易留言板过程中遇到的问题
  6. 网线重新插拔后恢复正常_14日科技精选:路由器经常掉线,必须重新插拔网线才能上网。什么原因?...
  7. 禁止吸烟(字符串替换)
  8. bash 将二进制转换为十进制_6、计算机进制之二进制、十进制、十六进制之间的转换...
  9. 获取虚拟机的唯一标识_JVM笔记:Java虚拟机的类加载机制(附详细思维导图)...
  10. (day 43 - 二分查找 ) 剑指 Offer 53 - II. 0~n-1中缺失的数字
  11. 冰点还原6.61 For Win2003 打造全过程
  12. 手机APP如何访问局域网服务器
  13. 软件测试工程师是什么?
  14. 安装 SuMa (Surfel-based Mapping using 3D Laser Range Data)遇到的问题
  15. 航空枢纽问题 matlab,[原创]航空领域常用几个速度的定义和说明
  16. hduoj 2034
  17. unity3d 气泡效果_Unity3D插件 Underwater FX 水下粒子系统特效/水泡气泡/资源素材
  18. 网络要上天! 雄心勃勃的天空网络计划
  19. 2018年软件评测师上午真题 + 答案(一)
  20. 北大计算机博士有多难考,中国最难考的一所大学,博士生超过2万,是清华北大之和...

热门文章

  1. 特岗计算机老师年度总结,特岗教师工作总结
  2. 七、网络安全之AAA认证技术详解
  3. 唐伯虎怎么才能快速找到秋香-二分查找算法
  4. 20行Python代码,轻轻松松获取各路书本,你还在花钱买着看嘛~
  5. 数据结构与算法分析----八大排序(暂时缺少堆排序)
  6. javabean中bean的含义
  7. java人名识别_HanLP-基于HMM-Viterbi的人名识别
  8. 《从PPTV网络视频,到PPIO区块链分布式存储》 -- 同济创业谷PPIO CodeTalks区块链技术分享会
  9. 数组的定义、初始化和使用
  10. 万字详解用户行为分析