我正在尝试复制客户端报告的错误,这是“这个脚本运行缓慢”的通知,由于它的JS / DOM解析速度非常慢,因此会出现在IE中。
这在我的虚拟机IE6(客户端有IE6)上不会发生,也不能在我拥有的测试机器上运行(某些mac mini)。
我可以保证发生了很多JS,并且在使用XHR检索后会处理大量的HTML,此外还有很多JS在附加的DOM元素上运行。我不可能发布整个脚本,但我相信我可以轻松地跟踪问题,但我希望重现这个以优化它。
这是一个非常高调的客户端,因此我不能只是通过电话或IM与他们交谈。我有什么方法可以减慢我的机器速度,以重现这个错误?或者我应该坚持要求客户的计算机规格并尝试访问更有可能再现该问题的旧计算机?甚至使用像browsercam这样的东西?
我想到的另一个想法是,让JS操作更多,以便我得到问题并尝试优化我的代码,所以即使使用我的附加代码,它也不会发布脚本通知错误。
我很感激任何建议。
答案 0 :(得分:5)
在VM内部运行,并故意降低内存以进行多余的交换。如果这仍然不起作用,你可以在后台运行一些基准测试SW,那些往往会咀嚼很多CPU。
答案 1 :(得分:4)
有很多可以做的事情来减慢你的电脑速度。这里真正的问题是你是想要它是精确的,还是只是咀嚼足够的CPU周期以使IE6能够更频繁地重现这个问题。
从粗略和简单的方法开始:使用虚拟机,只给它一个CPU,然后运行具有高CPU使用率的东西,比如播放电影。尝试使用不会占用太多RAM的东西,因为强制IE进入页面文件对这里没有帮助。为了获得更精确的减速,您可能想要降低CPU的速度,尽管为了调试Javascript这样做有点极端。访问旧计算机也可以解决问题,尽管这些都不能保证重现问题。
使用屏幕共享软件可能也很困难 - 这取决于客户端是否愿意安装和设置这样的软件,但这肯定有助于重现该错误。在你耗尽客户的计算机时间的同时不得不玩弄它可能是不可接受的。
除了减慢计算机速度之外,您还可以尝试其他一些方法。实际上,您可以通过更改某些注册表值,根据此Microsoft support article手动降低IE慢速脚本警告的时间限制。在您自己的计算机上尝试deep profiling Javascript,即使您无法生成慢速脚本错误,您仍然可以找到瓶颈或脚本执行不良的地方。
答案 2 :(得分:1)
我发现了你的问题:
This is a really high profile client so I can't just get on the phone or IM and speak to them.
- 如果他们希望修复此问题,您可能需要修复此问题。
否则,如果您对问题有所了解,可以:
您应该尝试使用一百万行:
sXML = "<?xml version="1.0" encoding="UTF-8"?>\n<rootElement>\n";
for (var i=0;i<1000000;i++){
sXML += '<element name="' + Math.floor(Math.random()*10001) + '">'
+ 'some more random text: ' + Math.floor(Math.random()*1001)
+ "</element>\n";
}
sXML = "</rootElement>";
var oXML = (new DOMParser()).parseFromString(sXML, "text/xml");
var root = oXML.documentElement;
当然,您可以根据需要使用随机元素等进行精心设计。