4

新的 jQuery v1.4 这么说……

jQuery.ajax() 现在使用 onreadystatechange 而不是计时器

Ajax 请求现在应该通过使用 onreadystatechange 而不是轮询来占用更少的资源。

我不确定这到底是什么意思,但在我的网站(社交网络,如 facebook、myspace)上,我收到了用户收到的通知,它会定期调用 AJAX 以查看页面上是否有新的通知显示,这是可以的吗?改进这样的事情的完成方式?

4

3 回答 3

4

是的,它会改善您的网站。根据您的站点使用的 AJAX 数量,速度上的改进不会像调用期间使用的较低系统资源那样明显。

IE6 不支持onreadystatechange,所以我认为它会回退到 IE6 的计时器,但是 XMLHTTPRequest 的大多数其他浏览器实现都支持该事件。事件回调总是比轮询脚本使用更少的资源(每隔几毫秒检查一次)。

关于IE6

onreadystatechange 事件是在 Windows Internet Explorer 7 中引入的。来源:MSDN

于 2010-01-15T14:40:39.103 回答
1

2 道格·内纳

IE 6绝对支持事件 onreadystatechange。我现在可以在 XPsp2 上的 IE 6.0.2 中看到它。MSDN 声明自 IE 版本 7 起支持对象 XMLHttpRequest,包括其所有事件。现代库(如 jQuery)通过手动创建对象“Microsoft.XMLHTTP”或“Msxml2.XMLHTTP”来解决此问题,这两个对象都支持 onreadystatechange 事件。这里的例子(MSDN)。

祝你好运。

PS 在这里回答,因为该线程在搜索“onreadystatechange jquery”的谷歌结果的前 10 名中

于 2010-11-15T12:15:53.177 回答
0

onReadyStateChangexmlHttpRequest对象的属性。看起来$.ajax之前是在轮询 xhr 以查看它是否已准备好,但现在正在监听实际事件。这意味着它消耗更少的 javascript 资源,它不会减轻您的任何服务器资源,因为在这个意义上您仍然需要进行 AJAX 轮询。所以这并不是你必须实施的新技术或其他东西,它只是背后发生的事情有所不同,要利用这种改进,你所要做的就是切换到新版本。

我猜(但我不确定),现在他们使用onReadyStateChange,您还可以将自己的回调方法传递给该事件,这将允许您执行Comet ("AJAX Push"),这可能会改善您的服务器端性能。但请注意,Comet 实施起来可能很棘手:)

于 2010-01-15T14:44:43.120 回答