重复的 AJAX 请求会降低浏览器速度
Repeated AJAX requests slow browser
有一个小网页从Web服务器请求XML文件。Web 服务器每秒更新此文件两次,其中包含要在网页上显示的新数据。
页面运行一段时间后,每当它从服务器获取新数据(每秒两次)时,它都会减慢整个浏览器的速度。问题是间歇性的 - 有时持续几秒钟,有时持续更长时间。
问题存在于火狐中。
function getData() {
var dataVal = parseFloat($("#data").html().substring(0, 100));
doSomethingWithVal(XTEval); // seemingly irrelevant, as it lags without this function too
}
t = 0.5;
function process_xml() {
var xmlhttp = GetXmlHttpObject();
if (xmlhttp === null) {
alert("Your browser does not support AJAX!");
return;
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4) {
document.getElementById("data").innerHTML = xmlhttp.responseText;
getData();
setTimeout('process_xml()', t * 1000); // moved from end of function to here based on a suggestion
}
};
xmlhttp.open("GET", "data.shtml", true);
xmlhttp.send("");
}
function GetXmlHttpObject() {
if (window.XMLHttpRequest)
return new XMLHttpRequest();
if (window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP");
return null;
}
data.shtml 只包含:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--#echo var="someVal.val" -->
也许有一种比使用 AJAX 不同/更好的方法?
我不知道这是
问题所在,但是如果往返服务器,加上解析和您在process_xml
中执行的其他所有操作需要超过 500 毫秒,那么您最终会同时收到多个正在进行的请求,这最终会堵塞管道(浏览器对可以同时处理的数量有限制)。 您最好在 onreadystatechanged
处理程序中调用您的setTimeout
,完成其中的所有工作。
相关文章:
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 谷歌地图多边形减慢浏览器速度
- AMD应用程序在浏览器中的加载速度是否快于CommonJS应用程序
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- 简单的Html5画布操作会降低浏览器的速度
- JQuery 错误 -- 减慢在浏览器中查看错误的操作速度
- $.每个遍历 JSON 数据都会减慢浏览器速度
- 用户在火狐浏览器上的输入速度很慢,但不是 chrome
- 重复的 AJAX 请求会降低浏览器速度
- 一页上有四个视频,会减慢浏览器的速度
- Facebook推荐/最近的活动挂在浏览器上,速度非常慢
- 模糊的javascript是否会减慢浏览器的速度
- 调整EaselJS动画的大小,同时'It’It’s播放时不会放慢浏览器的速度
- 浏览器中的音频播放速度操纵
- 谷歌Chrome浏览器速度问题
- WebKit浏览器更新画布的速度很慢
- 关于浏览器缓存,为优化速度加载网站
- 在浏览器中测量下载和上传速度
- 在浏览器中调整视频的播放速度
- 如何使JavaScript运行在正常的速度在Chrome浏览器,即使标签不活跃