keep-alive 缓存什么,怎么刷新和清理?

先理解原理和示例,再练习完整口述与追问。

缓存组件实例并涉及 activated / deactivated。结合 include / exclude、key、容量和业务过期策略处理;失活不等于销毁,计时器、订阅和请求要按需要管理。

keep-alive 缓存组件实例,使切走的组件失活而非按普通路径销毁,便于保留表单和滚动等局部状态。activated/deactivated 表达进入和离开缓存可见状态,可用于恢复或暂停轮询。include/exclude 匹配组件名等规则,max 限制缓存规模;缓存身份还与 vnode 的 key 等因素有关。

列表进入详情再返回时,可以保留筛选、页码与滚动;但若在详情修改了记录,应通过明确的失效标记或回到列表时的校验决定重查。只在 created 请求的缓存页返回时未必重新执行 created;可在 activated 中按业务条件刷新,避免每次激活无条件重复请求。

deactivated 不等于销毁,window 监听和定时器不会自动全部消失。不要无限缓存带大量数据或用户敏感状态的页面,退出登录应清掉相关缓存。

keep-alive 缓存组件实例,离开时进入 deactivated,回来进入 activated,而不是每次都重新 created 和 mounted。我会区分需要保留的筛选、滚动状态和需要重新验证的业务数据,用过期时间或显式失效标记决定刷新。include/exclude 常按组件名控制,max 限制缓存数量,key 要稳定且反映真正需要隔离的实例。

面试官可能继续问追问与完整解答展开收起

列表回来要恢复滚动,但详情编辑后要刷新列表,怎么实现?为什么随意更换 key 会导致重复缓存?

列表离开前保存滚动位置,返回激活时按需恢复;详情保存成功后给列表对应数据打失效标记,列表激活时刷新并保持筛选。每次随机改 key 会创建新的缓存身份,可能积累多份实例并丢掉原状态,不能拿它代替明确的刷新策略。