新的jQuery v1.4说明了......
jQuery.ajax()现在正在使用 onreadystatechange而不是计时器
Ajax请求现在应该使用更少的资源 onreadystatechange而不是polling。
我不确定这意味着什么,但在我的网站上(像facebook,myspace这样的社交网络)我收到了用户获取的通知,它会定期调用AJAX来查看是否有新的通知显示在页面上,这是什么能够改善这样的事情的方式?
答案 0 :(得分:4)
是的,它会改善您的网站。根据您的网站使用的AJAX数量,改进速度不会与呼叫期间使用的较低系统资源一样明显。
IE6不支持onreadystatechange
所以我认为它会回退到IE6的计时器,但XMLHTTPRequest的大多数其他浏览器实现都支持该事件。事件回调总是使用比轮询脚本更少的资源(每隔几毫秒检查一次)。
关于IE6
onreadystatechange事件是在Windows Internet Explorer 7中引入的。 Source: MSDN
答案 1 :(得分:1)
2 Doug Neiner
IE 6 绝对支持事件onreadystatechange。我现在可以在XPsp2上的IE 6.0.2中看到它。 MSDN声明自IE版本7以来支持XMLHttpRequest对象,包括其所有事件。现代库(如jQuery)通过手动创建支持onreadystatechange事件的对象“Microsoft.XMLHTTP”或“Msxml2.XMLHTTP”来解决这个问题。 示例here(MSDN)。
祝你好运。PS在这里回答了这个搜索“onreadystatechange jquery”的google搜索结果排名前10位的帖子
答案 2 :(得分:0)
onReadyStateChange
是xmlHttpRequest
对象上的属性。看起来$.ajax
先前正在轮询xhr以查看它是否已准备就绪,但现在正在侦听实际事件。这意味着它消耗更少的javascript资源,它不会减轻您的任何服务器资源,因为您仍然必须在 意义上进行AJAX轮询。所以它不是一种你必须实现的新技术,它只是背后的不同之处,并且要利用这种改进,你所要做的就是切换到新版本。
我猜(但我不确定),现在他们使用onReadyStateChange
,您也可以将自己的回调方法传递给该事件,这样您就可以Comet ("AJAX Push") ,这可能会提高您的服务器端性能。但要注意Comet可能很难实现:)