Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery获取php数据的速度很慢。如何使它快速?_Php_Jquery - Fatal编程技术网

jquery获取php数据的速度很慢。如何使它快速?

jquery获取php数据的速度很慢。如何使它快速?,php,jquery,Php,Jquery,正如标题所描述的,jquery显示数据的速度比纯php慢1到2秒。演示在。如何使jquery显示数据的速度与纯php一样快 代码: <div id="jqryd"> </div> <script src="javascripts/jquery-1.5.js" type="text/javascript" language="javascript"></script> <script type="text/javascript">

正如标题所描述的,jquery显示数据的速度比纯php慢1到2秒。演示在。如何使jquery显示数据的速度与纯php一样快

代码:

<div id="jqryd">
</div>

<script src="javascripts/jquery-1.5.js" type="text/javascript" language="javascript"></script>
<script type="text/javascript">
    var jqryd = $('#jqryd');
    jQuery.get("sale-show-month2.php", function(data) {
        jqryd.html(data);
    });
</script>


<?php
    $sql = "SELECT payment_date, SUM(price) FROM sale WHERE seller_id=? && Year(payment_date)=? GROUP BY Month(payment_date) DESC"; //this is loged-in user.
    $q = $conn->prepare($sql);
    $result = $q->execute(array($user_id, $selected_year));
    if(!$result){
        die("Error Select user table query : ". implode(" : ", $q->errorInfo())); //if don't use implode, output of errorInfo() will be "Array".
    }
    while($r = $q->fetch(PDO::FETCH_ASSOC)){
        $price_db2 = $r['SUM(price)'];
        $payment_date_db = $r['payment_date'];
        $payment_month_db = date("F", strtotime($payment_date_db));
        $payment_month_db2 = date("m", strtotime($payment_date_db));
        echo "This is pure php : " . $payment_month_db . " - " . $money_currency . $price_db2 ."<br>";
    }
?>

var jqryd=$('jqryd');
get(“sale-show-month2.php”),函数(数据){
jqryd.html(数据);
});

关于服务器和客户端之间传输的数据量,我总是只传输所需的最小数据(可能使用纯文本/XML或JSON,具体取决于数据),并使用最有效的方法将其附加到DOM

无论数据有多大,都使用最好(在您的情况下是最快的)方法来附加到DOM

例如,您将看到使用内置DOM创建方法总是更快

var li = document.createElement('li');
li.innerHTML = i;
li.setAttribute('title', 'Element number ' + i);
li.setAttribute('class', 'list-item');
container.appendChild(li);
因此,在您的例子中,我将以JSON的形式传递数据,然后循环节点并根据需要进行追加。如果返回了大量数据,那么我会对数据进行分页,或者显示一些初始数据,然后添加一个“showmore”函数,检索要显示的下一部分数据


关于后端-我将确保我的查询得到优化并使用了正确的索引。

分析站点示例中的流量,我发现,除了结果之外,在您的
sale-show-month2.php
页面中,您甚至返回了jquery javascript。这会大大降低整个页面的速度:出于某种原因,网络跟踪器会在调用中看到一个查询字符串,如
http://plekz.com/javascripts/jquery-1.5.js?_=1337691808625
,不允许使用缓存

简单地避免返回jquery链接将提高性能


即使在这之后,您也会看到jquery加载的数据稍后会出现,但这是因为
get
方法在加载第一个页面后被调用。你可以通过firebug或其他工具(chrome和IE都有自己的)非常清楚地看到这一点。

你的问题没有真正意义。使用firebug或chrome检查网络传输-在这两种情况下,您将看到等待数据的时间大致相同。然而,在收到php生成的数据后,页面需要很长时间才能下载jquery,只有这样才能请求新数据


唯一值得注意的是,使用jquery连接到服务器需要半秒钟的时间——如果连接不好,这种延迟总是存在的。使用服务器端生成的数据,您将获得一次,使用ajax,您将获得两次


因此,在您的场景中,您无法加快提取速度—除非您将服务器切换到具有适当吞吐量和适当响应时间的服务器。

虽然有一些方法可以优化结果,但您的问题的答案是

如何使jquery显示数据的速度与纯php一样快

这是不可能的

在解析并准备就绪之前,Javascript将无法将任何内容加载到DOM中。这意味着“纯PHP”数据已经加载,因为它是作为主页的一部分由服务器交付的

只有到那时,浏览器必须向服务器发出另一个请求,并花费另一个往返时间,才能获得AJAX版本。因此:无论您的服务器和JS有多好,AJAX版本永远不会像服务器端版本那么快


注意:这仅适用于两个版本都存在竞争的设置。当然,通过不使用PHP和数据库请求,然后稍后使用AJAX加载一些内容来加速HTML页面的初始交付是有意义的。

数据有多大(即从服务器传回多少数据)?(您可以使用Firebug或任何其他调试器进行检查)解决方案取决于数据的大小?假设50kb到500kb的数据,解决方案是什么?好的1。我已经删除了sale-show-moth2.php上的jquery-1.5链接,我可以看到速度变得非常快,但仍然比php慢。非常感谢。如果我想在sale-show-month2.php页面上添加链接,你介意教我如何避免返回链接吗?我不懂php,但我想它有某种部分页面机制。我们的想法是创建一个部分页面来创建表示数据的普通html:这个页面可以通过ajax调用,如您的示例中所示,或者包含在一个适当的页面中,包含您需要的所有javascript文件链接。回到您的句子:
我可以看到速度变得非常快,但仍然比php慢,那不是真的。它叫晚一点,这就是它出现晚一点的原因。。。但它的速度和原来的一样快。我明白了。非常感谢你。我把这个链接放在当前页面上,并从sale-show-month2.php中删除了这个链接,它就工作了!!!高兴。似乎sale-show-month2.php页面可以从当前页面读取链接,这个方法只能应用于客户端脚本吗?无法应用于服务器端脚本,对吗?因为我做了测试,让sale-show-month2.php读取当前页面中的服务器端php链接
()
,但它无法读取..“使用服务器端生成的数据,您将获得一次,使用ajax,您将获得两次”。“它”指的是什么?你是说ajax将比jquery落后2倍吗?这是用户为连接到服务器而支付的开销。当您第一次连接并下载html时,您需要支付费用——如果之后您必须执行ajax获取以从服务器接收数据,则需要再次支付费用。