proxy代理   soft软件   IT 业界特快   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
money理财   life生活   RSS聚合门户   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« 清华大学免费地址列表更新 (20070418) | Main | freeip.thu.pac 20070423 Data time: THU 2007.04.18 06:10 »

April 23, 2007

Quaful 发布 windtear 版自动代理脚本导致浏览器死锁补丁

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/archives/2007/04/23/001215.html
http://windtear.net/archives/2007/04/23/001215.html

Quaful 发布 windtear 版自动代理脚本导致浏览器死锁补丁

相关链接:
freeip.thu.pac 20070423 Data time: THU 2007.04.18 06:10
freeip.cer.pac 20070423 Data time: CER 2007.04.15

http://www.newsmth.org/bbscon.php?bid=99&id=1071727
发信人: Quaful (夸父|毕业倒计时), 信区: NewSoftware
标  题: [原创] windtear 版自动代理脚本导致浏览器死锁(含补丁)
发信站: 水木社区 (Mon Apr 23 11:14:19 2007), 站内

前段时间我发过一篇文章,描述了自动代理脚本导致Firefox或者IE死锁的问题。当时给出
了临时解决方案,即死锁时重起网卡。不过显然这并不是很方便的方案。
{
http://www.newsmth.org/bbscon.php?bid=99&id=1065616
发信人: Quaful (夸父|毕业毕业), 信区: NewSoftware
标  题: [原创]关于浏览器假死的一种原因及临时解决办法
发信站: 水木社区 (Fri Apr 13 10:06:34 2007), 站内
}

今天我终于克服惰性,认真研究了一下死锁的位置,看看能不能用什么补丁把它绕过去。结
果跟了5分钟就发现了问题出在自动代理脚本中调用的函数:isInNet() 上(可见我忍受了
这么久死锁-重起网卡-再死锁-再重起网卡的痛苦是多么的不值得,惰性真是人类的大敌啊
)。isInNet() 这个函数倒不会因为 dns 解析失败就死掉,但是它明显会变得很慢。
Firefox 和 IE 都有这个问题,并且实际上有人已经发现了:
Firefox:
http://www.clasohm.com/blog/one-entry?entry_id=14866
“Even one call to isInNet() can be fatal for Firefox. If the DNS server for
the host name is not reachable, the call will only time out after a couple of
seconds. And during this time, Firefox will be completely unresponsive. No
display updates, no response to keyboard or mouse input.”

IE:
http://support.microsoft.com/kb/315810/en
“Browser Is Slow to Respond When You Use an Automatic Configuration Script”
......

看到了吧,上面是一连串的 isInNet() 的调用,如果域名不能解析的话,每个调用会有5到
40秒的延迟,就算5秒吧,这里有482次调用,那么延迟就是 5*482=2410秒=40分钟。所以浏
览器基本上就跟死掉一样了。

windtear 当年写的这个自动代理脚本造福了教育网的大众,这个脚本的普及度也相当高,
呵呵。不过因为这点考虑不周,也让我郁闷了好久。不过现在原因找到了,解决起来也简单
,在 windtear 版的脚本基础上打一个补丁就行了:
加一句:if ( isResolvable(host) ) { ... } 判断一下域名能否解析,不能解析就不要再
调这几百次的 isInNet() 了。
本blog WWW

Posted by windtear at April 23, 2007 11:15 AM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.