我正在使用swfobject在我的网站上加载一个flash对象,并且它在包含大量数据的页面上加载速度非常慢......就像swfobject在加载swf之前等待页面加载一样。
以下是使用swfobject的示例页面:http://www.tripline.net/trip?id=066434736132100383DB8A184B7D8D17
如果我用iframe更改swfobject代码(使用swf作为src)或者只使用object embed,flash页面加载的速度要快得多......在页面的其余部分加载之前。
我知道我可以对该页面进行大量的页面加载时间改进(我也正在努力),但我想知道是否有一些具体的更改我可以对我的方式做出使用swfobject获得与iframe或对象嵌入相同的加载速度?
答案 0 :(得分:3)
要尝试的几件事情:
在使用swf替换内容之前, embedSWF()
等待HTML DOM准备就绪。使用静态发布,支持不使用javascript嵌入对象的标准方式的浏览器将在它们到达<object>
元素后立即开始加载swf,然后当DOM准备好时,swfobject将在javascript中修补。这样可以让你的swf显示得更快一些。
如果可能的话,将更多javascript移到页面底部。
(我很少这样做,但是)因为任何javascript都会阻止DOM解析(在大多数浏览器中),直到脚本被执行(加载并执行),这意味着它稍后会到达swf。
这只会对静态发布产生真正的影响,因为动态发布仍然等待DOM准备就绪。 DOM ready 仍然不会发生,直到页面上的所有脚本都已加载并执行,这应该花费大约相同的时间,无论它们放在何处(除非将脚本移动到底部摆脱其他阻塞问题)。
使用createSWF(不推荐)
createSWF()
并不等待DOM准备就绪。我现在几乎不了解swfobject在DOM操作方面的内部工作方式,但是 - 在动态发布的情况下 - 可以在你添加占位符后立即调用它。 DOM 的占位符部分(大部分)已准备就绪(请参阅例如here)。
但这一切都取决于当前页面中swfobject希望解决的其他部分,以及它在未来版本中可能会做些什么。在DOM准备好之前的任何DOM操作也可能导致浏览器在某些情况下呈现两次部分,这显然不会有助于提高性能。简而言之,不推荐。