使用Jquery加载内容时的页面速度

时间:2017-05-24 06:42:57

标签: javascript jquery html mysql pagespeed

在我的数据库表中,我在一个名为product的表中最多有1000个条目。

在显示所有产品页面中,我有<ul class="produlctlist"></ul>

还有脚本

jQuery(document).ready(function( $ ) { 

     $.ajax({
              method: "POST",
              url: "http://example.com/filter.php",
            }).done(function( msg ) {

                     $( ".produlctlist" ).html(msg);

                     });

   });
filter.php

中的

$query = "SELECT * FROM `product`";
$result = $conn->query($query);

 while($row = $result->fetch_assoc()) { 
  echo "<li><img src='".$row['img']."' />".$row['name']."</li>";

 }

这里一切都很完美。我的问题是,我需要将查询限制为"SELECT * FROM产品LIMIT 45"并实施分页或加载更多以提高页面速度?或者不需要限制查询,因为所有细节都是从jquery加载的?

  

在没有使用分页的情况下是否有任何替代解决方案可用   还是加载更多?

     

要从mysql获取1000个数据,它需要比fetch 45更多的时间   数据,那么在Jquery中有任何方法可以获取50个数据   首先,然后是接下来的50个数据?

2 个答案:

答案 0 :(得分:1)

javascript: - 你需要处理全局变量页面 - 如果你想保留它,例如刷新cookie中每个更改存储的页面,然后在第一行加载cookie值

var page = 0;
jQuery(document).ready(function( $ ) { 

 $.ajax({
          method: "POST",
          url: "http://example.com/filter.php?page="+page,
        }).done(function( msg ) {

                 $( ".produlctlist" ).html(msg);

                 });
});

关于您的编辑的javascript(从前45开始,然后在下次加载时加载下一个45):

var page = 0;
jQuery(document).ready(function( $ ) { 

 $.ajax({
          method: "POST",
          url: "http://example.com/filter.php?page="+page,
        }).done(function( msg ) {

                 $( ".produlctlist" ).html(msg);
                 page++;

                 });
});

PHP

$query = "SELECT * FROM `product` LIMIT ".(intval($_GET['page'])*45).", 45";
$result = $conn->query($query);

while($row = $result->fetch_assoc()) { 
   echo "<li><img src='".$row['img']."' />".$row['name']."</li>";
}

答案 1 :(得分:1)

我看到你可以改进的两件事:

  • 仅检索您需要的列(不要使用*,而是指定您想要的列)
  • 第二个问题是,您每次都会获得所有产品,您可以使用分页来获取每次只需要的行。

您可以使用LIMIT通过指定偏移量和所需行数来获取所需的行数。

  

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。

     

使用两个参数,第一个参数指定的偏移量   第一行返回,第二行指定最大数量   要返回的行。初始行的偏移量为0(不是1)

另外,只选择您需要使用的行(read this post for more details):

SELECT img, name FROM `product`LIMIT 0, 44; -- Returns rows 0-45