jquery获取php数据的速度很慢。如何使它快速?
正如标题所描述的,jquery显示数据的速度比纯php慢1到2秒。演示在。如何使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">
<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获取以从服务器接收数据,则需要再次支付费用。