如何加载通过ajax获取的数据更快?

时间:2015-09-08 13:38:24

标签: javascript php jquery ajax

目前,数据以PHP脚本的形式提取。所以我发现对于40组数据,加载大约需要20秒。我想这是因为ajax必须等到所有结果都收集完毕。如果数据集增加到数百,我认为播种速度会慢很多。

所以我做了一些关于如何减少加载时间的研究,因此遇到了并行的ajax请求。我认为对于多个请求会有所帮助。对于单个请求但是已经提取了成百上千的数据,有没有办法提高速度?

JS:

$(function() {
    $.ajax({
        dataType: "json",
        url: 'showAllTutor.php',
        success: function(data) {
            console.log(data.length);
            var j=0;
            for (i = 0; i < data.length; i++) {
                j++;
                console.log(data[i].name);
            }
        }
    });
});

PHP:

 $sql="SELECT * FROM userinfo,posts WHERE userinfo.UUID = posts.UUID AND posts.p_id > '$last_msg_id'";
        $stmt =connection::$pdo->prepare($sql);
        $stmt->execute();
        $json=array();

        while($row = $stmt->fetch()) {
             $total = $row['reviewPlus']+ $row['reviewNeg'];
             array_push($json,array("name"=>$row['name'],"subject"=>$row['subname'],"subid"=>$row['subID'],"rate"=>$row['pricing'],"dateposted"=>$row['datePosted'],"location"=>$row['location'],"contact"=>$row['phone'],"morning"=>$row['morning'],"afternoon"=>$row['afternoon'],"evening"=>$row['evening'],"postId"=>$row['p_id'],"total"=>$total,"plus"=>$row['reviewPlus'],"user"=>$row['UUID']));                
        }       
    }       
    echo json_encode($json);

1 个答案:

答案 0 :(得分:2)

加载时间可能是因为你的代码中存在多个循环,在php中循环,而 for 循环在jquery中会增加执行时间,

我建议你避免在php代码中使用 fetchAll 语句收集所有数据

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data);

并在您的$total计算中使用jquery 进行循环,

这可能会有所帮助,快乐编码。