Ajax请求耗时太长

时间:2011-08-01 17:08:13

标签: php jquery html ajax json

我问你,因为我没有任何想法......

我做了一个ajax请求,从服务器获取一个小数据。 json的答案已经被服务器缓存了,所以速度非常快。

window.xhr = $.ajax({
url: domain+'index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid='+window.currentajaxrequest+'&fx_id='+window.id+'&fx_page='+(window.page-1)+'&fx_pager='+window.pager+'&fx_order='+window.order,
type: 'POST',
dataType: 'json',
timeout: 5000,
cache: false,
async: true,
beforeSend: function () {
        ...
    },
    error: function (xhr, ajaxOptions, thrownError) {
        return false;
    },
    success: function (data) {  
        ...

但答案时间大幅缩小,有时需要1秒,有时只需67毫米......

continents.js:65  http://teszt.domain.com/index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid=0&fx_id=6&fx_page=1&fx_pager=9&fx_order=name
continents.js:100 start: 0
continents.js:101 beforesend: 9
continents.js:102 success: 5087
continents.js:103 complete: 5096
continents.js:65  http://teszt.domain.com/index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid=1&fx_id=6&fx_page=2&fx_pager=9&fx_order=name
continents.js:100 start: 0
continents.js:101 beforesend: 9
continents.js:102 success: 70
continents.js:103 complete: 77
continents.js:65  http://teszt.domain.com/index.php?fx_action=ajax&fx_mode=continents&fx_type=countries&fx_ajaxid=2&fx_id=6&fx_page=3&fx_pager=9&fx_order=name
continents.js:100 start: 0
continents.js:101 beforesend: 11
continents.js:102 success: 301
continents.js:103 complete: 304

获得具有几乎相同大小(kbytes)的相同数据结构。一切都由服务器缓存。

在服务器端,php的运行时间总是大约30-40ms。我的错是什么?

1 个答案:

答案 0 :(得分:1)

除了服务器上的网络速度和性能高峰之外,您可能会遇到浏览器中同一主机名的2个活动连接的限制。几个问题:

  • 您是否有其他可以同时运行的请求?
  • 此脚本是否在页面启动时运行?如果是这样的话,它可能会与其他资源请求作斗争。

我建议您查看firebug中的网络面板,看看在您提出请求时还有其他问题。