我有一个ajax应用程序,其代码如下:
$.ajax({
type: "GET",
url: "data.txt",
beforeSend:function(){
},
success:function(response){
just update responsed data;
}
});
这个调用每秒进行一次,它只是从'data.txt'更新最新的数据,该数据正在使用cron job在服务器上更新。现在,由于它的唯一功能是每秒更新最新数据所以我将对最新ajax调用更感兴趣;那么我如何终止旧的ajax调用,已经超过4秒,但尚未完成,以便我可以减少服务器流量。是否建议使用"data.html"或"data.php"代替"data.txt"会提高应用程序的性能?对于ajax驱动的应用程序,哪个web服务器可以比Apache表现得更好?我急需这些帮助;
您可以跟踪上次成功更新的时间。
function NowMS() {return parseInt(new Date().getTime())}
dataLastUpdateT = -Infinity;
$.ajax({
type: "GET",
url: "data.txt",
success: function(response){
if (NowMS() > dataLastUpdateT) {
use(response);
dataLastUpdateT = NowMS();
}
}
}
我不知道您目前是如何设置的,但也许在最近一次AJAX调用完成(或返回错误)之后运行下一个AJAX调用会更好。所以它应该是这样的:
(function updateData() {
$.ajax({
type: 'GET',
url: 'data.txt',
beforeSend: function() {
// Do stuff
},
success: function(response) {
// Handle response
updateData();
}
});
})();
我不知道更改文件类型是否会对性能产生影响。
Edit:如果您确实需要终止请求,您可以使用这里解释的技术。
你可以试试:
function getData(){
$.ajax({
type: "GET",
url: "data.txt",
timeout:4000,
beforeSend:function(){
},
success:function(response){
},
error:function(){
},
complete:function() {
setTimeout(function(){getData();},1000);
}
});
}
getData();
这样,ajax请求在4秒后超时,并且每秒钟重试一次(无论成功与否)
也看看nginx为例,它是快速和使用更少的内存比apache来处理客户端连接