可以在Apache上启动的Ajax请求数量是否有限制

时间:2009-12-01 14:02:17

标签: ajax apache2 prototypejs

与Apache服务器相比,同时发生的Ajax请求数量是否有限制?例如,考虑以下函数来更新页面上的div元素(原型JS):

function trigger_content_update(cell) {
    //asynchronous : false is required for this to work properly
    $$('.update').each(function(update_item){  
        new Ajax.Request('/neighbouring?.state=update_template&dummy='+(new Date()).getTime(),{
            asynchronous: false,
            parameters: {divid: update_item.id, source: cell},
            onComplete: function(response) {
                var elm = response.getHeader('Element');
                if ($(elm) !== null) { $(elm).update(response.responseText) }
            }
        });
});

}

在我的HTML页面上,有8个div元素用“update”CSS选择器标记,从而启动了8个ajax请求。代码工作正常,异步属性设置为false,但是一旦我设置了异步:true我可以观察(在Firebug中)大多数Ajax请求返回500状态(内部服务器错误)。

发生这种情况后,需要重启apache才能恢复。

2 个答案:

答案 0 :(得分:2)

我会检查处理请求的服务器端代码。

就Apache而言,您的Ajax请求只是一个POST - 就像您提交表单一样。 Apache应该可以轻松处理8个同时发出的请求,因此它表明Apache正在运行的服务器端代码正在锁定 - 也许它正在尝试写入数据文件并将其锁定?

答案 1 :(得分:2)

我刚写了一个测试用例,我向服务发送了10,000个同时发送的Ajax调用。适用于Apache Tomcat。所有的服务都带回了正确的答案。

听起来您的服务存在一些内部同步问题。