【问题标题】:Why does AJAX is so long?为什么 AJAX 这么长?
【发布时间】:2017-07-02 03:34:52
【问题描述】:

大家好,我正在尝试编译并将一些表单发送到 php 文件,但我注意到它非常慢,即使在 PHP 中我 var_dump 仅 POST 值,如果我使用正确的运行它也需要相同的时间职能。 也许代码是错误的,这就是我想要做的:

$("#button").click(function(){
        $("#button").css("border","2px solid blue");
        var total_forms = $("input[name=total_forms]").val();
         $.ajax( {
        type: "POST",
        url: "<? echo "myurl.php";?>",
        data: {delete : 1}, //before sending my forms i need to run another function that delete some items in mySQL DB
        success: function(data) {
        for(var i = 0; i < total_forms; i++){
            var string_ok = "#form_number_";
            string_ok = string_ok.concat(i);
            var dataString = $(string_ok).serialize();
             $.ajax( {
        type: "POST",
        url: "echo "myUrl.php;"",
        data: dataString,
        success: function(data) {
            console.log(data); //it's a bit faster, only a bit
            $("#mydiv").append(data); //it's a bit slower
        }
            });
        }
        }
            });
    });

我忘了说我是在 MAMP 上运行它的 Macbook,它有 8GB RAM 和 SSD,只有 10GB 可用空间,也许我的 PC 是问题,IDK..

编译、发送到 PHP 并为 500 个表单加盖数据大约需要 4 分钟

这是我发送的 dataString 示例:

prd_number=1259&prd_max_number=1763&old_prd_id=0&prd_action=true&title=INFORMAT%20G1X85A%23A80&title_check=true&old_title_text=&new_image_url=&old_image_url=&is_mech=&image_check=true&new_cat=Informatica%2CINFORMAT&category=true&new_price_text=222.04&price=true&new_sku_text=888182658918&oth=true&ncw=negat&stwe=testing&mark_text=INFORMAT_G1X85A%23A80&check_two=true&other_sto=table&var2=true&elemt=&weight=true&qt=3&qslow=true&clients=Norman%2Cli&taking=true&setting=normal&vars_set=true

我注意到如果我使用console.log(dataString),控制台首先标记所有dataString日志,然后开始打印每个php响应。

【问题讨论】:

  • 大约 35 个输入类型隐藏和 4/5 个复选框 @JaromandaX
  • 我还注意到,当查询需要很长时间才能运行(第一个 ajax 调用)时,第二个 ajax 调用在 100 个表单后崩溃并继续 console.log() 什么都没有 @JaromandaX
  • 您要提交 500 个表单?
  • 以您的示例为例,您向服务器发送了大约 250MB 的有效负载 + 可能还有 100MB 用于请求标头。如果这是每个用户和发送点击的数据量,您应该使用 CDN 或云服务来处理负载。我怀疑单个服务器(甚至是大型商业服务器)能否处理这种负载。您的常规 apache 一次可以/确实处理大约 100 个打开的连接。您的每个用户只需单击一次即可创建 500 次评论,并阻止整个服务器 4 分钟(根据您的说法)。

标签: javascript php jquery ajax post


【解决方案1】:
  • 您是在本地发送数据吗?比如你的 php 服务器是在本地运行还是托管在某个地方?
  • 表格上有多少数据?
  • 您的代码也在 for 循环中发送 ajax 请求。所以你有一个嵌套的ajax调用,循环的每次迭代都有一个。那当然会更慢,有没有办法可以将它重构为一个 ajax 请求?基本上你发出一个ajax请求,等待那个响应回来,循环,然后每次你迭代时发送另一个。似乎有点复杂。

【讨论】:

  • 是的,我使用的是本地主机。我不知道如何检查表单上有多少数据,我不认为太多,因为只有字符串不太大,我这样做是因为我想要更新每个数据的动态响应,所以我有“更新了 100 项中的第 1 项”“第 2 项...”等等..
  • 我用更多细节更新了我的答案@Ryan
猜你喜欢
  • 2012-08-09
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 2016-03-25
相关资源
最近更新 更多