修改Cordova插件加载行为以加快加载时间

时间:2015-10-24 10:46:07

标签: javascript android ios performance cordova

我正在寻找一种方法来加速Cordova上的插件加载,这样我就可以最早显示我的UI(UI在第一次启动时并不需要所有插件)。

到目前为止我尝试过:

  • 根据文档,我尝试添加:<param name="onload" value="false" />;对于我正在加载的每个功能。没有帮助。 (Related query on SO

  • 已将应用初始化代码移出deviceReady(初始化不需要Cordova特定位)。

我是如何得出插件是瓶颈的结论?如下:

  • 我卸载了应用所需的所有插件(其中23个!),加载时间缩短了2.5到3秒。所以我确信这是一个瓶颈。

  • 此外,我删除了所有JS和CSS,包括cordova.js并加载了一个空白的HTML页面。有插件和没有插件。差异很大。

总体而言,问题是在插件的所有本机代码都没有运行之前,WebView本身不会出现。更多的插件,更多的时间是可见的。有没有办法让Cordova立即加载WebView并让JS在后台初始化插件时加载并在必要时触发deviceReady?我可以在以后的某个时间做特定的Cordova。

相关:

  1. Showing webView in Cordova before API has loaded
  2. phonegap plugin onload=false has no effect

1 个答案:

答案 0 :(得分:2)

我同情你的目标,但你不能从turnip获得牛奶。

由于使用onload=false的想法,<feature (...)>已被弃用。按照底部的链接,阅读#12。

在另一个问题上,很明显提问的人并不知道这是不可能的。

所有Cordova / Phonegap平台的主UI查看器是一个名为WebView的库(在Android中,在其他平台上类似,see)所有这些库都有一个共同点,就是不加载,Javascript,或其他工具,使其成为一个完整的webbrowser。因此,Javascript必须启用(通过Cordova)并加载(由OS)。直到HTML文档的所有其他部分都被识别(但可能没有加载)才会发生这种情况;这包括CSS,字体,图像和图标(如果需要)。

然而,在后面的项目中,例如CSS,时间可以弥补 - 如果CSS被优化。很多时候开发人员不进行这种优化,因为需要提供一个里程碑(他们通常永远不会返回修复它)。

回到插件,确实需要一些时间来加载插件,但通常不清楚为什么插件需要太长时间。加载后的插件必须进行* some *初始化,但需要多长时间取决于插件。例如,地理定位(GPS)插件可能需要长达10秒才能获得可用的读数。

  • 加载时间尝试调整加载时间几乎不会有用,因为无论插件如何,插件都需要加载它所需的内容。
  • 初始化时间尝试调整插件的内部结构是您应该与作者进行的讨论。

此外,我可以推测为什么有些插件花了这么长时间,但我不知道你在使用哪些插件;所以这将是徒劳的努力。

最后,有*可能*某种方法可以缩短启动用户就绪之间的时间,但我听说没有,我没有看到。这包括我对Cordova,Phonegap,Android和Apple的iOS文档的阅读。

在您开发时,本文档可能非常有用 Top Mistakes by Developers new to Cordova/Phonegap