【问题标题】:Ionic 3 lazy loading make lag with large html fileIonic 3延迟加载使大型html文件滞后
【发布时间】:2017-12-17 16:36:13
【问题描述】:

我在我的项目中使用 ionic 3,但我在延迟加载方面遇到了一些问题。

我有一个ResultPage 模板resultpage.html 有超过1000 行代码。在HomePage 中,我想通过navCtrl.setRoot 导航到ResultPage。当我调用它时,屏幕会在 3-4 秒后冻结,然后再将我带到ResultPage。这真的是一个糟糕的用户体验。它只发生在 lagre teamplate 并且在我第一次进入该页面时。我决定删除ResultPage 中的延迟加载,延迟消失。我不知道这是正确的方法吗?谁能告诉我在这种情况下我该怎么办?

非常感谢!

【问题讨论】:

    标签: angular typescript ionic-framework ionic2 ionic3


    【解决方案1】:

    向用户隐藏它的一种方法是在您的应用中仍然使用延迟加载,但急切地预加载该特定页面。您可以查看the docs 了解更多信息。

    默认情况下,预加载是关闭的,所以设置这个属性就可以了 没有。预加载在应用程序后热切加载所有深层链接 靴子而不是根据需要按需提供。要启用预加载,请设置 主应用程序模块配置中的 preloadModules 为 true:

    @NgModule({
      declarations: [
        MyApp
      ],
      imports: [
        BrowserModule,
        IonicModule.forRoot(MyApp, {
          preloadModules: true // <- Here!
        })
      ],
      bootstrap: [IonicApp],
      entryComponents: [
        MyApp
      ]
    })
    export class AppModule { }
    

    如果开启了预加载,它会根据 优先价值。优先级可能有以下值: “高”、“低”和“关”。当没有优先级时,将设置为 “低”。

    将首先加载优先级设置为“高”的所有深层链接。 完成加载“高”优先级模块后,所有深层链接 将加载优先级为“低”(或无优先级)的

    设置优先级就像将它传递给@IonicPage一样简单 装饰师:

    @IonicPage({
      name: 'my-page',
      priority: 'high'
    })
    

    所以在你的情况下,我会尝试将优先级设置为:

    • 加载应用时用户将与之交互的第一个页面(例如主页)

    • ResultPage 以保持它已经预加载并在用户重定向到它时更快地显示它。

    请注意,急切地预加载页面可能会增加应用的启动时间,因此请尽量少预加载页面。

    【讨论】:

    • 感谢您的回复。我将尝试您的解决方案并获得反馈。但我还有一个问题,我可以将默认priority 设置为关闭吗?因为我有50多页所以我不想手动设置priority:off
    • 嗯,但根据文档 在完成加载“高”优先级模块后,将加载所有优先级为“低”(或无优先级)的深层链接因此在这种情况下将优先级设置为 off 或默认保留(低)几乎相同(因为您只是使用优先级来预加载某些页面,但您并不关心其余页面已加载)...既然您提到您有 50 多个页面,恐怕预加载页面可能会影响应用程序的加载时间,使其有点慢...请让我知道如果你测试这种方法会发生:)
    • 结果如下:Test case1: all page priority:low, 2 page priority: high: 9s白屏(比没有预加载快很多)但是多秒的屏幕冻结,只显示html,不能做任何东西。
    • 测试用例2:所有页面priority:off,2页面priority:high:9s白屏,5s冻结屏幕。测试用例3:全页priority:off,1页priority:low:9s白屏,4s定屏
    • 这是一个聚合页面。我有一个段列表。每个段都有这么多的html。尽管使用了 ngIf,但似乎 ngIf 对加载时间没有影响
    猜你喜欢
    • 2017-11-20
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    相关资源
    最近更新 更多