2012-02-09 109 views
6

我有一个页面(A),这是一个沉重的JavaScript页面,当我离开此页面转到页面B时,它需要很长时间。当我从不同的页面转到页面B时,速度非常快。所以它与页面A和可能的JavaScript有关。响应和页面加载之间15秒的繁重Javascript页面间隙

当我运行从显影剂工具IE 9它显示间隙的网络分析器〜响应和DomContentLoaded(事件)之间15秒。

页面A带有JavaScript,因为它运行Xopus Editor,一个富文本XML编辑器。

没有任何人有什么我能做的要么分析差距会发生什么或有什么我可以做,使页A卸载更快的任何想法。

+0

另请参阅:http:// stackoverflow。com/questions/855126 – 2012-02-09 08:30:16

+0

感谢您的建议,我检查了javascript,并且没有电话显示需要很长时间。它看起来像IE中的垃圾收集或类似的东西。 FF和chrome响应迅速。 – 2012-02-09 09:51:46

+0

它只发生在特定的页面B吗? – user123444555621 2012-05-21 16:40:39

回答

2

这是一个长镜头,因为有不对的地方约eleventy百的事情,但它可能是地方开始。这个脚本代码添加到页面的最后一个:

<script> 
    function unloadJS() { 
     var scripts = document.getElementsByTagName("SCRIPT"); 
     for (var index = 0; index < scripts.length - 1; index++) 
     { 
     var file = scripts[index].getAttribute("src"); 
     var start = +new Date(); 
     scripts[index].parentNode.replaceChild(document.createElement('script'), 
               scripts[index]); 
     var elapsed = +new Date() - start; 
     alert(file + ": " + elapsed.toString()); 
     } 
     return false; 
    } 
</script> 

此代码试图迫使每个加载网页上的JavaScript文件的卸载,报告的时间才能把它们的量以毫秒为单位。触发此为方便,即在卸载或一个按钮:

<button onclick="return unloadJS()">Go!</button> 

这可能无法正常工作/告诉你,你需要知道,因为当脚本断开IE可以拒绝做垃圾回收的。这可能是因为IE真的,当你做到这一点,或者只是因为IE不卸载它们 - 嗯,什么奥狄说:)

在任何情况下,这不是一个解决方案; JS卸载时无关紧要,垃圾收集仍然需要相同的时间。这只是第一次诊断的尝试,就像你所要求的。希望它可以/帮助...

0

也许你正在使用一个像PrototypeJS这样的Javascript库,它钩住页面unload事件,并且当页面卸载时,它通过一个数组循环移除所有DOM元素的所有事件侦听器在页面上。如果我们知道您正在使用的库,我们可以模拟一个调用来卸载页面,以强制库执行它的卸载功能。之后,启动计时器以查看加载其他页面所需的时间。

2

IE sucks。但有几种工具可用于分析您的页面。

FiddlerHttpWatch是一个很好的工具,用于分析您的请求时间表,并查看是否需要很长时间才能下载所有繁重的JavaScript代码。这通常是减慢js页面速度的主要原因。由于IE doesn't take parallel downloading js very well,数百个小型JavaScript文件需要花费更多时间。

对于这种情况,试试minifying your javascript。这是提高页面加载性能的最直接方式。

如果它没有多大帮助。您可能需要YSlow来分析详细的性能。尽管它不适合IE,但在Chrome或FF下修复一些问题可能会影响IE下的性能。

在你的控制台添加一些日志,缩小范围,也许你可以找到执行性能问题。