【发布时间】:2011-03-18 00:09:37
【问题描述】:
分页重要吗?如果您有 200 个条目会发生什么。对于使用它的人来说,它会减慢网站的速度吗?
很抱歉,这听起来像是一个简单的问题,只是想知道,对游戏来说是新手。
谢谢
更新:
阅读答案后。我认为使用它们很重要。那么我怎样才能使用限制搜索页面。不是在寻找花哨的解决方案..
【问题讨论】:
标签: php pagination limit
分页重要吗?如果您有 200 个条目会发生什么。对于使用它的人来说,它会减慢网站的速度吗?
很抱歉,这听起来像是一个简单的问题,只是想知道,对游戏来说是新手。
谢谢
更新:
阅读答案后。我认为使用它们很重要。那么我怎样才能使用限制搜索页面。不是在寻找花哨的解决方案..
【问题讨论】:
标签: php pagination limit
将结果分成多个页面更高效、更快捷且对服务器更友好。
首先,无论一个页面上有多少个结果,大多数用户都不会查看前 X 个结果,因此会有很多未使用的结果被检索、处理并发送到客户端是浪费带宽和CPU时间。事实上,通过分页,你增加了他们继续前进的机会,如果它们都在一个页面上,他们会停止。
第二,如果这只是文本数据,即使是大量数据也会很快,但是如果你把图片和必须为每个结果显示的东西放入目录中,那么事情真的很重要返回的结果越多,开始放慢速度。
在 SQL 中通过 LIMIT 进行分页是通过使用限制范围来完成的。当在 SQL 查询中为 LIMIT 提供单个参数时,它将返回最多该数量的结果,因此SELECT * FROM table LIMIT 5 将最多返回 5 个结果。当给定两个参数时,它会跳过结果,直到到达第一个参数,然后返回下一个结果数。所以,SELECT * FROM table LIMIT 40,10 从第 41 个结果开始最多返回 10 条记录。
因此,您需要某种方式告诉服务器客户端想要什么页面或结果,通常这是通过分页链接完成的,例如:http://www.domain.com/search.php?p=4 或 http://www.domain.com/search.php?r=40,然后您使用该值通过 $_GET 来确定 SQL 查询中的限制。类似的东西(在这种情况下使用通过 get 传递页码):
<?php
$sql = "SELECT * FROM `table`"; //Set up initial query string
$max_per_page = 20; //Max results per page, can be drawn from elsewhere/configuration file or something or declared directly
if(isset($_GET['p'])) //Check to see if $_GET['p'] is set
{
$current_limit = abs((int)$_GET['p'] - 1) * $max_per_page; //Current limit = max * (current page - 1) other wise, page 2 would have a starting point of 40 instead of 20 like it should. When passing the result number to start on, you'd just use that instead
}
else
{
$current_limit = 0;
}
$sql .= ' LIMIT ' . $current_limit . ', ' . $max_per_page; //Construct LIMIT on end of query string
$result = mysql_fetch_assoc(mysql_query($sql));
?>
哦,要计算总结果,您可以先执行SELECT COUNT(*) FROM table WHERE etc. etc. 类型语句,这样您就知道总结果,因为您知道每个页面的最大结果,所以可以使用它来确定需要多少页页面。
【讨论】:
良好的分页将帮助您减少提供给客户的页面的重量和数据库的查询费用。 (因为您只需要加载 10 或 20 个项目而不是数千个)。
当然,用户体验也很重要。没有人愿意滚动几天来在网页上查找内容。
【讨论】:
我认为存在比技术更大的心理障碍。大多数硬件能够非常快速地对大量文本进行分页。但是,人们不太可能一直读完一篇非常冗长的文章。
为了方便用户,将大量文本分成小段通常是一种很好的做法 - 并提供全文下载。
此外,线条的长度和间距对于吸引观众也很重要。我建议行距为 1.5em,每行最多 15 个字。
与印刷媒体不同 - 人们不太可能走到最后 - 为了找出谁-dunnit,如果他们不喜欢几段,他们就会放弃。想象一下读者的手指放在左键上,另一个放在滚轮上 - 就像你现在可能正在做的那样 - 只是渴望离开这个页面并阅读其他内容。
【讨论】:
需要分页吗?依靠。每次我编写任何列出数据库中实体的页面时,我都会在它们上放置一些分页(按需)。
但如果我添加一个新的client,那可能有一个State?在这种情况下,显示所有状态的选择框不会被分页。因为它易于用户阅读,通常不会加载大量数据。
但对于更复杂和更大的查询,您始终必须设置限制并按需从数据库中加载数据。所有的软件都在成长。不分页,总有一天你会有些头疼的。
【讨论】:
它给人一种更好的完成感,如果使用得当,它可以更好地快速显示您希望用户看到的内容(最优惠的价格、最便宜的价格等)。在我看来,这也会更好地保持他们的注意力。
【讨论】: