我有一个 Web 应用程序,我正在尝试加速它。它看起来像这样:
+------+
| |
| |
+------+
+------+
| |
| |
+------+
+------+
| |
| |
+------+
每个框都是包含Flash SWF和一些javascript的iFrame。SWF下载了一个第三方SWF来显示信息。我发现Web应用程序的加载时间为:
LoadTime = (4 seconds) * numberOfBoxes + (3 seconds)
当我直接嵌入第三方swf文件时(不使用我们的swf或javascript),加载时间为:
LoadTime = (1 second) * numberOfBoxes + (2.5 seconds)
我正在寻找额外的3秒钟用在哪里,以便加速我们的Web应用程序。 我认为可能的原因是:
- 服务器端处理(JSP)
- 下载
- Javascript
- Flash
- 其他?
下载
下面是从Firebug中获取的下载图片。 我已经用文件类型替换了文件名。 第一次下载后,没有任何下载特别耗时。然而,一个有趣的地方标记为红色。 红色区域是
My SWF
加载和加载两个gif文件以及Third Party SWF
之间的3秒间隔。 我认为这个暂停是由客户端处理引起的(这是真的吗?)。
注意:图表中的红色条不是图示的一部分。我添加它们以突出显示 .net 面板上未发生任何事情的间隙。
我认为可以从中得出结论,我有一个客户端处理问题,这意味着 Flash 或 Javascript。问题1:这正确吗?
编辑:我将非并发下载时间总和:
- 当有 1 个 iframe 时,下载时间为 1.87 秒
- 当有 2 个 iframes 时,下载时间为 2.29 秒
- 当有 5 个 iframes 时,下载时间为 8.57 秒
- 当有 10 个 iframes 时,下载时间为 10.62 秒
- 当有 21 个 iframes 时,下载时间为 17.20 秒
Javascript
我使用 Firebug 中的分析器来分析 Javascript。以下是页面上有四个组件时的结果:
这意味着每个图表的javascript运行大约需要0.25秒。我认为这是合理的。
问题2:我是否正确地阅读了这些结果?
这样留下来的大约有3.5秒/图表的处理时间可供其他用途。
Flash
我在AS3代码中插入了一些trace语句。我们正在监听一个名为“done loading”的事件。我在第一个初始化方法和“done loading”方法中放了一条trace语句。在这两个trace语句之间,flash只使用了大约0.2秒/图表的时间。
问题3:有没有更好的方式来分析flash?可能是flash加载或类似的东西占用了额外的时间吗?
其他
我不确定除了以下这些事情外还有其他事情:
- 服务器端处理 (jsp)
- 下载
- Javascript
- Flash
问题4:有什么我忽略的可能会占用时间的东西吗?
下一步
我不确定我的下一步应该是什么。我知道有些东西需要大约1.5-3秒/每个图表,但我无法弄清它是什么。我怀疑它与我的swf有关。
问题5:我该如何找到那些丢失的时间?
更新:时间总结
我已经绘制了每个可能占用时间的事物的所有时间图表。
- X轴是正在使用的图表数量。
- Y轴是加载所有图表所需的时间。
最后一个图表可能是最重要的图表。蓝色点表示总加载时间(使用秒表测量)。红色点表示我已经考虑到的时间(Javascript、下载时间和Flash时间)。
更新: 浏览器之争
我正在针对IE和Firefox进行开发(如果其他浏览器也能正常工作那就更好了)。到目前为止,所有呈现的结果都是在运行Firebug的Firefox上展示的。只是出于好玩,我想尝试其他浏览器。我不认为这会让我更接近解决方案,但很有趣的是看到IE有多烂。
注意:在运行 Firefox 测试之前,我清除了 cookies 和缓存。但我没有对 IE 或 Chrome 进行此操作。
更新: Flash 加载
我一直在我的代码中添加 console.log
语句,试图夹在慢代码中。(结果被推送到 Firebug 控制台)。
我注意到一个让我感到可疑的事情是,在我的最后一个 JavaScript 日志被打印出来和我的第一个 Flash 日志被打印出来之间有 2.5 秒的间隔。
17:08:29.973 - Javascript code
Time difference: 2510 ms
17:08:32.483 - Flash- myComponent.init()
Flash需要为每个swf设置虚拟机吗?它会在客户端编译actionscript吗?
当我<embed>
我的swf和主.mxml
中的creationComplete
事件之间会发生什么?