Web分页原理
2004-09-29 21:32
246 查看
分页问题是一个非常普遍的问题,开发者几乎都会遇到,这里不讨论具体如何分页,说明一下Web方式下分页的原理。首先是查询获得一个结果集(表现为查询数据库获得的结果),如果结果比较多我们一般都不会一下显示所有的数据,那么就会用分页的方式来显示某些数据(比如20条)。因为Http的无状态性,每一次提交都是当作一个新的请求来处理,即使是换页,上一次的结果对下一次是没有影响的。
这里总结三种实现分页的方式,不知道还有没有别的!
1.每次取查询结果的所有数据,然后根据页码显示指定的纪录。
2.根据页面只取一页数据,然后显示这一页,这里要构造sql语句。
3.取一定页数的数据,就是前面两种的折中。
这里还要注意的是这些数据是放在request还是session中,这里一一讨论
1.一般不会放在session中,因为会占用大量内存,所以要放在request里面。
优点:实现比较简单,查询速度比较快。
缺点:占用内存多一些,网络传输数据多。
对于数据量比较少的查询这种方法比较合适。这里有人把数据放在session中,这样换页的时候就不用重新查询,但是这样是极其不好的,强烈建议不要这样使用。
2.肯定不会放在session中,因为放在session中没有意义。
优点:占用内存少。
缺点:比较麻烦,必须先获得查询结果的总数,因为要知道有多少纪录才知道有多少页。另外要构造分页查询语句,对于不同的数据库是不一样的。
3.这种情况是肯定放在session中了,要不然我干吗取好几页呀,这样的实现是为了减少数据库查询的次数,比如我保存第1到10的纪录,那么换页的时候如果在1到10之间就可以直接从session获取。如果换到11页,我可以重新设置缓存11到
20页的数据(或者5到15页的数据),这样的话换10次才需要一次数据库查询操作。
优点:占用内存相对不多,提高平均查询速度。
缺点:实现起来更加复杂,可能存在脏数据,需要自己定义一个缓存集合。如果查询的数据量比较大,可以考虑采用这样方式。
这里总结三种实现分页的方式,不知道还有没有别的!
1.每次取查询结果的所有数据,然后根据页码显示指定的纪录。
2.根据页面只取一页数据,然后显示这一页,这里要构造sql语句。
3.取一定页数的数据,就是前面两种的折中。
这里还要注意的是这些数据是放在request还是session中,这里一一讨论
1.一般不会放在session中,因为会占用大量内存,所以要放在request里面。
优点:实现比较简单,查询速度比较快。
缺点:占用内存多一些,网络传输数据多。
对于数据量比较少的查询这种方法比较合适。这里有人把数据放在session中,这样换页的时候就不用重新查询,但是这样是极其不好的,强烈建议不要这样使用。
2.肯定不会放在session中,因为放在session中没有意义。
优点:占用内存少。
缺点:比较麻烦,必须先获得查询结果的总数,因为要知道有多少纪录才知道有多少页。另外要构造分页查询语句,对于不同的数据库是不一样的。
3.这种情况是肯定放在session中了,要不然我干吗取好几页呀,这样的实现是为了减少数据库查询的次数,比如我保存第1到10的纪录,那么换页的时候如果在1到10之间就可以直接从session获取。如果换到11页,我可以重新设置缓存11到
20页的数据(或者5到15页的数据),这样的话换10次才需要一次数据库查询操作。
优点:占用内存相对不多,提高平均查询速度。
缺点:实现起来更加复杂,可能存在脏数据,需要自己定义一个缓存集合。如果查询的数据量比较大,可以考虑采用这样方式。
相关文章推荐
- WEB分页原理
- Web分页原理
- WEB分页原理
- 深入剖析Web分页原理
- 学习之路九:深入剖析Web分页原理
- JAVA WEB开发之基于xml配置文件的分页实现(一) 分页配置原理
- Web访问原理-从输入URL到页面加载完成的过程中都发生了什么事情?
- 自定义web控件,完成分页框架
- webpack最简单的入门教程里bundle.js之运行单步调试的原理解析
- iOS 第三方框架 - SDWebImage 原理及使用
- C#--Web数据分页
- java分页的实现,插件PageHelper的使用及原理
- Web 请求响应原理(转)
- 移动端web滚动分页的实现方法
- web服务器apache架构与原理
- web上存漏洞及原理分析、防范方法(文件类型检测漏洞)
- Java EE的Web服务原理和体系结构
- Hibernate的setFirstResult,setMaxResults实现数据库分页原理
- web学习之博客小项目(分页显示文章)
- oracle分页查询及原理分析(总结)