Framework7缓存减缓了应用

时间:2018-03-02 13:36:40

标签: reactjs cordova redux html-framework-7

我们将Framework7(版本1.6)与React,Redux& Cordova为了构建应用程序,应该在App&尽快购买商店。

该应用程序有大约15个不同的页面,主要显示文本数据。从图形上讲,应用程序并不是很复杂。

当我们启动移动应用程序时,该应用程序非常敏感并且感觉原生。但是,在不同页面之间导航(±30次)之后,或者在从空闲状态恢复应用程序之后,我们注意到应用程序的性能显着退化。我们有理由相信这与framework7缓存页面的方式有关。当我们查看Web应用程序的DOM结构时,我们看到在更改页面时,旧页面保留在DOM中并获取缓存的css类。此外,当在表示页面的react组件中放置断点时,我们看到这些页面保持活动状态。换句话说,当您访问页面20次时,将创建20个页面实例,并且每个实例都会调用任何处理程序(如reacts componentwillreceiveprops方法)。

我们目前认为这些未清理的页面导致性能下降,因此我们一直在尝试配置framework7app,以防止此缓存行为。

我们一直在尝试多种方法来阻止这种缓存行为: 1.我们在framework7App配置中将cacheDuration设置为0,preloadPreviousPage和cache为false。 =>这不会阻止任何缓存行为 2.我们将页面的domCache设置为false =>这打破了导航。导航到您已访问的页面后,该应用程序将不再导航到该页面。 3.我们甚至试图根据framework7库内部使用的方法自行进行任何清理。这是我们为清理这些页面而提出的方法之一:

setTimeout(() => {
            var allPages = $(f7.mainView.pagesContainer).children('.page.cached');
            for (var i = 0; i < allPages.length-2; i++) {
                f7.pageRemoveCallback(f7.mainView, allPages[i], 'left');
                f7.router._remove(allPages[i]);
                f7.mainView.allowPageChange = true;
            }
        }, 200);

=&GT;这样可以正确地清理容器并从DOM中删除缓存的页面,但是只要这个代码被触发一次,应用程序的性能就会大幅度下降并且在一段时间后不会好转,即使在清理之前性能仍然可以接受缓存。你能告诉我们我们做错了吗?

有人可以就我们可能做错的事情以及这种行为是否正常给我们一些见解?谢谢!

0 个答案:

没有答案