请教一个 vue2 keep-alive 缓存问题,缓存的组件无法被销毁

331 天前
 gdlooc

vue 版本:2.6.14 我有一个设置了 keep-alive 缓存的主页,当我每次往返主页和其他页面时,我发现每次都会缓存新的组件,而且之前的缓存的组件似乎没有被销毁,因为内存一直无法回收,删掉<keep-alive>之后就没有这个问题了,内存可以正确回收。求各位大佬解惑。

968 次点击
所在节点    Vue.js
2 条回复
zephyr1
331 天前
这可能是因为你的缓存组件中有一些全局状态或者定时器等资源没有被正确清理。当你使用 keep-alive 缓存组件时,缓存的组件会被保存在内存中,而不是被销毁。如果这些组件中存在一些没有被清理的资源,那么这些资源将一直占用内存,直到你关闭页面或者刷新页面。所以,为了避免这种问题,你需要在组件的 beforeDestroy 钩子函数中清理全局状态和定时器等资源。

另外,你也可以通过在 keep-alive 标签上添加 exclude 或 include 属性来控制那些组件需要被缓存,那些组件不需要被缓存,从而避免不必要的内存占用。
gdlooc
329 天前
@zephyr1 谢谢,我尝试了没找到原因

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/945324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX