使用Spring控制器缓慢GET请求

时间:2013-01-07 16:34:43

标签: javascript performance spring tomcat request

以下是描述问题的两种实施方式。

第一个是运行速度非常慢的方法。它尝试从服务器获取数据,但请求的时间pending太长,只有在它返回数据后才能正常运行(除了可怕的同步性能)。

asyncMethod: function(doSmth, param) {  
    var resp = $.ajax({
        type: 'GET',
        async: false,
        url: 'url'
    });
    data = resp.responseText;
    doSmth(param, data);
}

这是相同的方法,但它是异步。这里消除了性能问题。但只有在重新加载页面时才会成功执行该部分。可能重新加载会停止一些执行,这些执行是前一个代码示例的瓶颈。

asyncMethod: function(doSmth, param) {  
    var resp = $.ajax({
        type: 'GET',
        url: 'url',
        success: function () {
            data = resp.responseText;
            doSmth(param, data);
        }
    });
}

我不需要使用异步请求,如果同步一个工作得很快(但现在却没有)。似乎有一些执行,使请求保持等待的时间太长。我没有看到可能成为瓶颈的执行。也许它在库中的某个地方使用,但在处理resp时没有其他请求处于活动状态。

解决问题或分析问题的方法有哪些?建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

您是否尝试过这样的异步方法:

asyncMethod: function(doSmth, param) {  
    $.ajax({
        type: 'GET',
        url: 'url',
        success: function (response, status) {
            doSmth(param, response.responseText);
        }
    });
}

答案 1 :(得分:1)

如果响应处于“待定”状态的时间过长,则有两个主要原因:

  • 充分利用ajax请求的应用程序代码花费的时间比预期的要长
  • 简单的网络延迟(在应用程序层中可以做的很多)

如果您有权访问满足请求的代码,那么我就从那里开始。此外,如果此请求与您的所有其他请求相比花费的时间异常长,则可能不是网络问题