截至目前,我们可以将 flutter web 应用程序作为单个文件启动,该文件将立即加载,因此需要花费大量时间和带宽来加载,这并不理想,有没有办法一次只加载一个页面,而不是整个网络应用程序。我的意思是,一次加载一个小部件。
任何建议将不胜感激。
在花了很多时间尝试解决这种情况之后,我找到了一种加快应用程序首次加载速度的解决方案。
我看到我的 main.dart.js 正在下载,然后,main.dart.js 触发了 canvaskit.wasm 文件的下载,这意味着我的应用程序以级联模式启动,避免下载两者并行文件。
因此,经过多次尝试后,我的解决方案是仅向 index.html 文件添加 2 行代码(.../project_folder/web/index.html)。
在 ... 标记内插入以下两行:
<script src="https://unpkg.com/[email protected] /cdn-cgi/l/email-protection/bin/canvaskit.js"></script>
<link rel="preload" href="https://unpkg.com/[email protected] /cdn-cgi/l/email-protection/bin/canvaskit.wasm" as="fetch" crossOrigin="anonymous">
我知道对这些 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/[电子邮件受保护] /cdn-cgi/l/email-protection/bin/").
它使我的初始加载时间得到了很好的改善!所以,希望它也适合你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)