zxdfe / FE-Interview

Every step counts
34 stars 1 forks source link

第46题:Vue的keep-alive实现原理? #47

Open zxdfe opened 2 years ago

zxdfe commented 2 years ago

keep-alive 运用了LRU算法;最近最少使用算法。 是一种内存数据淘汰策略。当内存不足的时候,淘汰最近最少使用的数据。

LRUCache -- > hashMap + 双向链表实现。

原理

  1. 使用 LRU 缓存机制进行缓存,max 限制缓存表的最大容量
  2. 根据设定的 include/exclude(如果有)进行条件匹配,决定是否缓存。不匹配,直接返回组件实例
  3. 根据组件 ID 和 tag 生成缓存 Key ,并在缓存对象中查找是否已缓存过该组件实例。如果存在,直接取出缓存值并更新该 key 在 this.keys 中的位置(更新 key 的位置是实现 LRU 置换策略的关键)
  4. 获取节点名称,或者根据节点 cid 等信息拼出当前 组件名称
  5. 获取 keep-alive 包裹着的第一个子组件对象及其组件名

LRU缓存-keep-alive实现原理