V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gdlooc
V2EX  ›  Vue.js

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

  •  
  •   gdlooc · 300 天前 · 914 次点击
    这是一个创建于 300 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    另外,你也可以通过在 keep-alive 标签上添加 exclude 或 include 属性来控制那些组件需要被缓存,那些组件不需要被缓存,从而避免不必要的内存占用。
    gdlooc
        2
    gdlooc  
    OP
       299 天前
    @zephyr1 谢谢,我尝试了没找到原因
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5413 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:00 · PVG 17:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.