如何减少flutter web应用程序的加载时间

UTK*_*rma 10 dart flutter flutter-web

截至目前,我们可以将 Flutter Web 应用程序作为单个文件启动,该文件将立即加载,因此需要花费大量时间和带宽来加载,这并不理想,有没有办法一次只加载一个页面,而不是整个网络应用程序。我的意思是,一次加载一个小部件。

任何建议将不胜感激。

小智 10

在花了很多时间尝试解决这种情况之后,我找到了一种加快应用程序首次加载速度的解决方案。我看到我的 main.dart.js 正在下载,然后,main.dart.js 触发了 canvaskit.wasm 文件的下载,这意味着我的应用程序以级联模式启动,避免下载两者并行文件。

因此,经过多次尝试后,我的解决方案是仅向 index.html 文件添加 2 行代码(.../project_folder/web/index.html)。在 <head>...</head> 标记内插入以下两行:

<script src="https://unpkg.com/canvaskit-wasm@0.33.0/bin/canvaskit.js"></script>
<link rel="preload" href="https://unpkg.com/canvaskit-wasm@0.33.0/bin/canvaskit.wasm" as="fetch" crossOrigin="anonymous">
Run Code Online (Sandbox Code Playgroud)

我知道对这些 URL 进行硬编码并不是一个好的做法,但是,只有在更新 Flutter 时才需要更改它们。我使用的是 Flutter 2.10.1,它使用 CanvasKit 0.30.0,当您构建 Web 应用程序时,生成的 main.dart.js 内部有一个硬编码的 URL。

如果您要将这两行添加到您的 index.html 文件中,我建议您构建 Web 应用程序,然后打开 main.dart.js 文件并搜索“canvaskit-wasm”,您会发现哪个是您应该使用的 URL(例如“https://unpkg.com/canvaskit-wasm@0.33.0/bin/”)。

它使我的初始加载时间得到了很好的改善!所以,希望它也适合你!


I M*_*ita 2

是的,只有当使用延迟/延迟加载调用 Flutter Web 库时,您才可以加载它。这里我从Dart 文档中复制/粘贴:

\n
\n

延迟加载库

\n

延迟加载(也称为延迟加载)允许 Web 应用程序在需要库时按需加载库。以下是您可能会使用延迟加载的一些\n情况:

\n
To reduce a web app\xe2\x80\x99s initial startup time.\nTo perform A/B testing\xe2\x80\x94trying out alternative implementations of an algorithm, for example.\nTo load rarely used functionality, such as optional screens and dialogs.\n
Run Code Online (Sandbox Code Playgroud)\n
\n

这里一篇与该主题相关的文章。

\n