我想知道分页背后的原因是什么?是否使用它是因为它从技术上限制了每页返回的行数,从而减轻了服务器的负担?
我想做一些没有分页的事情,但是鉴于我是新手(我是业余爱好者),开始怀疑它在技术上是否可行。
我想知道分页背后的原因是什么?是否使用它是因为它从技术上限制了每页返回的行数,从而减轻了服务器的负担?
我想做一些没有分页的事情,但是鉴于我是新手(我是业余爱好者),开始怀疑它在技术上是否可行。
Answers:
分页有多种原因,减少服务器负载只是其中之一。但是,斯蒂芬·奥尔(Stephen Orr)提出了一个正确的观点-您仍然需要首先查找数据量。你必须确保该查询是快速,不会过分加载你的服务器。
其他原因包括:
在这两种情况下,您都不想让用户等待-要么等待他们将不查看的数据,要么等待所有可能处理一个数据的数据。
它取决于实现方式。
它可以加快页面的渲染速度,但不一定会减轻服务器的负载。大多数幼稚的分页算法都需要先执行查询,以确定应该有多少页,然后再次查询以获得“分页”结果集。
分页所带来的最大价值是通过以下方式提高了应用程序的速度:
1-限制客户端和服务器之间传输的数据。如果用户正在寻找10个客户,那么没有读取100万个客户的意义。
2-通过仅检索适合用户视图的行来显着提高查询性能。如果用户将查看前10个客户,则没有读取100万个客户的意义。
3-分页有助于提供更多新数据。如果您的应用程序显示许多数据行,并且您的应用程序域需要对显示的表中的数据行进行大量更新,则很有可能在您转到页面列表的第20页时,某些行上的数据已经改变了。考虑一个读取股票价格或酒店可用客房的应用程序。检索旧数据并将其放置在客户端上是没有用的。
分页是一种策略,将过滤与您对特定场景下最终用户的需求(预期将导致一个很好的设计来满足此需求)结合起来,将极大地增强应用程序,特别是当多个用户访问数据库时同时。
分页并不总是琐碎的程序。在某些情况下,这很简单,但有时编写起来却非常复杂,因此执行SQL查询时不执行全表扫描。当然,这取决于您的索引,过滤条件和Where语句。
在我看来,分页是所有过早优化的源泉。无需分页即可编写您的网站绝对可以。
如果在发布后发现在一次调用中加载了太多数据,或者由于忙于加载不需要的数据而用户不得不等待他们想要的信息,请继续编写Ajax解决方案仅当人们向下滚动时才加载页面(请参阅:Twitter,Tumblr,Google图片搜索)。
编辑:以上第二段的假设是,常见的回答是“但如果您知道要在某个时候分页,您最好尽早进行,而不是浪费时间开发要扔的东西远。”
作为所有过早优化的母亲,我认为分页是UX的噩梦,并且有更好的解决方案,不需要在整个页面的顶部进行太多额外的开发。
尽管投票人数众多,但我还是保留这个答案,因为我坚持这种观点,即使这可能不是我最好的写作。