wujie icon indicating copy to clipboard operation
wujie copied to clipboard

keep-alive和保活模式如何结合使用

Open santeacher opened this issue 1 year ago • 8 comments

大家好,请教下,

主应用有多标签的功能,并开启了keep-alive,但对子应用不生效,切换多标签时,子应该不加载会出现空白页面,如果通过事件通信让子应用重新加载路由,子应用页面可以渲染出来,但就失去了keep-alive的意义,之前页面的数据又重新加载了。

如果主应用开启了保活模式,有keep-alive的效果,但所有子应用的页面又都是一个页面了,并且不能清除掉,关了多标签再打开子应用也还是上次的数据。

想请问下大家,keep-alive和保活模式如何结合使用,能达到vue项目keep-alive缓存多个页面数据的效果,非常感谢。

santeacher avatar Jun 09 '23 03:06 santeacher

。。。怎么跟我想问的问题一样。。。

YafXe avatar Jun 09 '23 04:06 YafXe

我目前目前用vue2作为主应用实现了效果,主应用中给子应用设置为保活模式,然后通过window 通信方式将主应用所点击的路由path传给子应用去跳转就可以了,之所以没用事件通信是因为当打开一个标签页的时候,点击浏览器刷新会报一个eventBus 通信的异常问题。

ty1025 avatar Jun 09 '23 10:06 ty1025

谢谢,保活了就不好清除已经缓存的页面,需要手动删除。

在无界群里跟大家讨论一下这个问题,现在可能还没有完美的解决办法,目前我这边了解的大概有两种办法:

1 主应用开启保活,一个标签用一个实例,子应用的name唯一不重复,关闭标签时destroyApp销毁相应的实例。 这样缺点就是:如果打开的页面太多,实例会比较多,估计会有点性能问题

2 参考一下这位小伙伴提供的,通过缓存vue实例,可以实现keep-alive的效果:https://github.com/Tencent/wujie/issues/588

看看大家还有更好的方案共享一下。

我目前目前用vue2作为主应用实现了效果,主应用中给子应用设置为保活模式,然后通过window 通信方式将主应用所点击的路由path传给子应用去跳转就可以了,之所以没用事件通信是因为当打开一个标签页的时候,点击浏览器刷新会报一个eventBus 通信的异常问题。

santeacher avatar Jun 12 '23 01:06 santeacher

能实现,但在无界没有解决内存泄露的问题之前,不要轻易尝试。 现在我满世界找能回收内存的方案

ikarosu avatar Aug 01 '23 08:08 ikarosu

我是这么做的,仅供参考:

  1. 子系统开启保活,这样保活子系统与其它子系统之间就有累死keepalive 的效果(但保活后点击菜单子系统不会跳转了,所以要用事件通信处理)。
  2. 基座监听路由变化, 用 通信 方式 实现点击子系统路由菜单 完成子路由页面跳转操作,这样就可以走子系统内部路由的 keepalive。

NoobJohn avatar Aug 16 '23 02:08 NoobJohn

@santeacher 交流群可以给个通道吗

ZhangYC193 avatar Apr 12 '24 10:04 ZhangYC193

我是这么做的,仅供参考:

  1. 子系统开启保活,这样保活子系统与其它子系统之间就有累死keepalive 的效果(但保活后点击菜单子系统不会跳转了,所以要用事件通信处理)。
  2. 基座监听路由变化, 用 通信 方式 实现点击子系统路由菜单 完成子路由页面跳转操作,这样就可以走子系统内部路由的 keepalive。

我也是这么做的,但是无法走子应用内部路由的keepalive。请问还有什么做的操作吗

KyouSeki avatar Apr 24 '24 04:04 KyouSeki

能实现,但在无界没有解决内存泄露的问题之前,不要轻易尝试。 现在我满世界找能回收内存的方案

小哥,你是保活了多少个实例呐

2518450374 avatar Jul 09 '24 09:07 2518450374