Javascript 使用Spring控制器减缓GET请求

Javascript 使用Spring控制器减缓GET请求,javascript,performance,spring,tomcat,request,Javascript,Performance,Spring,Tomcat,Request,以下是描述问题的两种实现方式 第一种是工作非常缓慢的方法。它试图从服务器获取数据,但请求等待的时间太长,只有在这之后它才会返回数据并且一切正常(除了糟糕的同步性能) 这里有相同的方法,但它是异步的。这里消除了性能问题。但它仅在重新加载页面时才执行成功部分。重载可能会停止前一个代码示例的瓶颈执行 asyncMethod: function(doSmth, param) { var resp = $.ajax({ type: 'GET', url: 'ur

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

第一种是工作非常缓慢的方法。它试图从服务器获取数据,但请求等待的时间太长,只有在这之后它才会返回数据并且一切正常(除了糟糕的同步性能)

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

asyncMethod: function(doSmth, param) {  
    var resp = $.ajax({
        type: 'GET',
        url: 'url',
        success: function () {
            data = resp.responseText;
            doSmth(param, data);
        }
    });
}
我不需要使用异步请求,如果同步请求工作得很快(但现在不行)。似乎有一些执行,使得请求等待的时间太长。我不认为执行可能是一个瓶颈。可能它在使用的库中的某个地方,但是在处理
resp
时,没有其他请求处于活动状态


解决问题或分析问题的方法是什么?非常感谢您的建议。

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

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

如果响应在“待定”状态下等待的时间过长,则主要有两个罪魁祸首:

  • 充满ajax请求的应用程序代码花费的时间比预期的要长
  • 简单的网络延迟(在应用程序层中对此做不了多少)

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

可能是您试图加载的脚本本身是瓶颈?该页面需要多长时间才能响应?第二个示例是执行AJAX的唯一正确方法。第一个示例就是JAX(消除了AJAX的局限性),而第三个示例则完全错误-它只在警报将脚本暂停足够长的时间时才起作用。@HankyPanky将同步版本保存大约40秒,但是服务器端的工作时间不会超过1秒。@JohnDoe有趣的是jquery会给请求增加40秒的开销。能否通过直接浏览仔细检查服务器端脚本的加载时间?@jbabey感谢您的回复。你是对的,但是第二个不能正常工作,这让我研究了AJAX和JAX选项。这也给出了一个很长的等待时间,最终返回了数据,但这不是一个选项。谢谢你的回复。嗯,我想你会发现性能问题是基于网络的,而不是应用程序。如果是这种情况,那么您将无法消除此性能问题,并且无法使用响应,因为无延迟==无响应。。。。当然,假设您无法控制ajax获取的另一端的代码。如果你这样做了,它可能仍然是一个应用程序问题,性能可以在请求的那一边找到…我考虑过,但其他请求工作得很好,通过直接浏览我也可以快速获得数据。所以我不确定到底是什么导致了这种行为。你是对的,问题出在服务器端。我不完全理解为什么,但我不得不手动强制输出。我在浏览器中看到响应,但它处于活动状态的时间太长。请编辑答案,我会将其标记为正确答案。
asyncMethod: function(doSmth, param) {  
    $.ajax({
        type: 'GET',
        url: 'url',
        success: function (response, status) {
            doSmth(param, response.responseText);
        }
    });
}