$.ajax对服务器的影响有多大



我目前每5分钟重新加载一次页面(如果你更喜欢这个词,请刷新),但这对我来说是一段很长的时间。我不知道用下面的代码重新加载页面会对服务器产生多大影响,我只想知道;如果我将间隔时间从5分钟更改为1秒,这会占用服务器多少时间?它会降低服务器的速度吗?我的网站每半小时有超过5名访问者,但更新后会更多。

$(document).ready(function() {

setInterval(function() {
$('#loading-page').show().html('<img src="images/animation-loading.gif" alt="" title="Reloading the page">');
$.ajax({
url: 'get/statistics',
type: 'GET',
success: function(s) {
$("#load-statistics").html(s);
},

error: function() {
$('#loading-page').show().html('<img src="images/exclamation-red.png" alt="" title="Couldn't reload page. Trying again soon">');
}
});
}, 300e3);

});

提前谢谢。

您可以自己测试。试试这个:

var start = new Date().getTime();
$.ajax({
url: 'get/statistics',
type: 'GET',
success: function(s) {
var end = new Date().getTime();
console.log('milliseconds passed', end - start);
$("#load-statistics").html(s);
}
});​

检查控制台的处理时间。然后,您可以根据控制台上获得的10-20个样本时间的平均值来更改间隔时间。

一个简单的答案是"5分钟=300秒",因此将时间间隔缩短到1秒将使服务器加载300x次。

它将比这少一点,因为网络中可能存在一些浏览器限制和延迟等,但无论如何都是实质性的。想想用户和他们产生的流量。

1秒太极端了,几乎不需要。你也可以伪造它(就像一些计数器所做的那样)来创建动态效果。

对于这个数字,即每半小时有5名访问者,我怀疑服务器处理页面更新应该不会有任何"困难",假设每次更新都不是一次疯狂的、密集的、会让服务器陷入困境的长时间操作。还有各种缓存或缓存机制,它们可以通过仅获取更改的资源而不是重新生成未更改的资源来进一步提高性能。当负载增加时,即每个x周期有更多的用户,那么您可以投资调整应用程序和/或服务器。使用监控工具进行检查可能是一个开始。

这很可能取决于服务器端的情况。你不能和开发服务器端服务的开发人员谈谈吗?它还将取决于有多少并发浏览器将调用此服务。许多服务被设计为同时应答数百万次,但通常情况下,您可以进行多少次呼叫以及频率都会写入服务文档中。

我认为经验方法可以是你的方式,根据服务器回答时间和服务器负载(如果你能测量的话)改变频率(秒或分钟)。您还可以测量JavaScript从调用开始到收到响应所花费的时间。

这在很大程度上取决于页面执行的操作。

此外,如前所述,1秒可能太极端,特别是对于统计类页面,同时5分钟可能太慢而无法使用,当然这将取决于您网站的内容/性质。

您的服务器负载将取决于请求频率以及并发用户的数量。

我想指出的是,在这种情况下,可以使用服务器端的"缓存"来显著降低服务器负载。根据页面的名称判断,统计数据是服务器缓存的理想候选者。因为它们不必是100%准确的,一旦生成,就可以在接下来的两分钟左右(例如)保持良好

因此,如果缓存统计信息响应,则所有后续请求都将获得缓存的内容,从而减少服务器上的负载。如果基础结构正确,请求甚至可能无法到达您的服务器(例如:某些网络交换机可以缓存并返回内容)。

您必须根据服务器端技术找到合适的缓存机制。

最新更新