新的 jQuery v1.4 这么说……
jQuery.ajax() 现在使用 onreadystatechange 而不是计时器
Ajax 请求现在应该通过使用 onreadystatechange 而不是轮询来占用更少的资源。
我不确定这到底是什么意思,但在我的网站(社交网络,如 facebook、myspace)上,我收到了用户收到的通知,它会定期调用 AJAX 以查看页面上是否有新的通知显示,这是可以的吗?改进这样的事情的完成方式?
新的 jQuery v1.4 这么说……
jQuery.ajax() 现在使用 onreadystatechange 而不是计时器
Ajax 请求现在应该通过使用 onreadystatechange 而不是轮询来占用更少的资源。
我不确定这到底是什么意思,但在我的网站(社交网络,如 facebook、myspace)上,我收到了用户收到的通知,它会定期调用 AJAX 以查看页面上是否有新的通知显示,这是可以的吗?改进这样的事情的完成方式?
是的,它会改善您的网站。根据您的站点使用的 AJAX 数量,速度上的改进不会像调用期间使用的较低系统资源那样明显。
IE6 不支持onreadystatechange
,所以我认为它会回退到 IE6 的计时器,但是 XMLHTTPRequest 的大多数其他浏览器实现都支持该事件。事件回调总是比轮询脚本使用更少的资源(每隔几毫秒检查一次)。
关于IE6
onreadystatechange 事件是在 Windows Internet Explorer 7 中引入的。来源:MSDN
2 道格·内纳
IE 6绝对支持事件 onreadystatechange。我现在可以在 XPsp2 上的 IE 6.0.2 中看到它。MSDN 声明自 IE 版本 7 起支持对象 XMLHttpRequest,包括其所有事件。现代库(如 jQuery)通过手动创建对象“Microsoft.XMLHTTP”或“Msxml2.XMLHTTP”来解决此问题,这两个对象都支持 onreadystatechange 事件。这里的例子(MSDN)。
祝你好运。
PS 在这里回答,因为该线程在搜索“onreadystatechange jquery”的谷歌结果的前 10 名中
onReadyStateChange
是xmlHttpRequest
对象的属性。看起来$.ajax
之前是在轮询 xhr 以查看它是否已准备好,但现在正在监听实际事件。这意味着它消耗更少的 javascript 资源,它不会减轻您的任何服务器资源,因为在这个意义上您仍然需要进行 AJAX 轮询。所以这并不是你必须实施的新技术或其他东西,它只是背后发生的事情有所不同,要利用这种改进,你所要做的就是切换到新版本。
我猜(但我不确定),现在他们使用onReadyStateChange
,您还可以将自己的回调方法传递给该事件,这将允许您执行Comet ("AJAX Push"),这可能会改善您的服务器端性能。但请注意,Comet 实施起来可能很棘手:)