0

我目前每 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);


});

提前致谢。

4

5 回答 5

2

一个简单的答案是“5 分钟 = 300 秒”,因此将间隔减少到 1 秒将加载服务器 300 倍。

它会比那个少一点,因为可能会有一些浏览器限制和网络延迟等等,但无论如何都是很大的。想想用户和他们产生的流量。

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

于 2012-11-30T08:02:02.407 回答
2

你可以自己测试一下。尝试这个:

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 个采样时间的平均值来更改间隔时间。

于 2012-11-30T08:06:45.523 回答
1

这很可能取决于服务器端发生的情况。你不能和开发服务器端服务的开发者谈谈吗?它还取决于有多少并发浏览器将调用此服务。许多服务旨在同时回答数百万次,但通常您可以拨打多少电话以及多久写入服务文档。

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

于 2012-11-30T08:02:47.767 回答
1

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

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

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

我想在这里指出的是,在这种情况下,您可以使用服务器端“缓存”来显着减少服务器负载。从您的页面名称来看,统计数据是服务器缓存的理想候选者。因为它们不必 100% 准确,并且一旦生成,可以在接下来的两分钟(例如)左右使用。

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

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

于 2012-11-30T08:12:39.303 回答
1

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

于 2012-11-30T08:03:35.677 回答