首页 > 解决方案 > 多个同时 ajax 请求返回 504 Gateway Timeout

问题描述

当我的 Web 应用程序同时运行多个 ajax 请求时,我收到 504 网关超时。它从我有 5 个同时 ajax 请求开始,无论查询是简单的(即使是一个简单的 select gender_code from gender,它只返回 2 条记录,或者只要请求超过 5 个)。

我正在使用延迟和承诺,如下所示:

var ajaxRequest = function(path) {
    return $.ajax({
        url: path,
        dataType: 'json',
    })
}


var getAjaxRequest = function(path) {
    var promise = $.Deferred();

    $.when(ajaxRequest(path)).done(function(data, status, jqXHR) {
        promise.resolve(data);
    });

    return promise.promise();
}

var main = getAjaxRequest('main');

var a1 = getAjaxRequest('path1');
var a2 = getAjaxRequest('path2');
var a3 = getAjaxRequest('path3');
var a4 = getAjaxRequest('path4');
var a5 = getAjaxRequest('path5');

// execute main first
$.when(main).done(function(data) {
    // execute remaining when main has finish loaded
    $.when(a1, a2, a3, a4, a5).done(function() {
        // when all are done, display everything at once.
    });
});

当我的网络应用程序是 Laravel 5.6 时,使用在 vagrant 上运行的宅基地

标签: jqueryajaxlaravelnginxpromise

解决方案


推荐阅读