0

我正在使用 swfobject 在我的网站上加载一个 flash 对象,它在包含大量数据的页面上加载速度非常慢......好像 swfobject 等到页面加载后才加载 swf。

这是一个带有 swfobject 的示例页面: http ://www.tripline.net/trip?id=066434736132100383DB8A184B7D8D17

如果我用 iframe 更改 swfobject 代码(将 swf 作为 src)或仅使用对象嵌入,则 flash 对象加载速度要快得多……在页面的其余部分加载之前。

我知道我可以对该页面进行大量的页面加载时间改进(我也在努力),但我想知道是否可以对我使用 swfobject 的方式进行一些特定的更改获得与 iframe 或对象嵌入相同的加载速度?

4

1 回答 1

3

有几件事可以尝试:

使用静态发布

embedSWF()在用 swf 替换内容之前等待 HTML DOM 准备好。使用静态发布,支持不使用 javascript 嵌入对象的标准方式的浏览器将在它们到达<object>元素后立即开始加载 swf,然后当 DOM 准备好时,swfobject 将在 javascript 中修补内容。这应该可以稍微更快地显示您的 swf。

如果可能的话,将更多的 javascript 移动到页面底部。

(我很少这样做,但是)因为任何 javascript 都会阻止 DOM 解析(在大多数浏览器中),直到脚本已经(加载和)执行,这意味着它稍后会到达 swf。

这只会对静态发布产生真正的影响,因为动态发布仍将等待 DOM 准备好。在页面上的所有脚本都加载并执行之前, DOM 就绪仍然不会发生,无论它们放置在哪里,这都应该花费大约相同的时间(除非将脚本移动到底部可以消除其他阻塞问题)。

玩弄 createSWF(不推荐)

createSWF()不等待 DOM 准备好。这些天来,我对 swfobject 在 DOM 操作方面的内部工作原理知之甚少,但是 - 在动态发布的情况下 - 在添加占位符之后可能会立即调用它。到那时,DOM的占位符部分(大部分)已准备就绪(参见例如此处)。

但这一切都取决于页面 swfobject 现在希望在幕后处理的其他部分,以及它在未来版本中可能会做什么。在 DOM 准备好之前的任何 DOM 操作也可能导致浏览器在某些情况下渲染部件两次,这显然无助于性能。总之,不推荐。

于 2012-01-29T02:48:51.900 回答