用户
 找回密码
 入住 CI 中国社区
搜索
查看: 10157|回复: 12
收起左侧

[分页] [讨论]分页中纯CI与AJAX的效率问题比较

  [复制链接]
发表于 2010-7-1 09:15:48 | 显示全部楼层 |阅读模式
分页是任何web应用避免不了的问题。CI自带的分页类,相信大家都仔细看过,是根据limit参数每次(也就是每页)搜索固定数量的数据显示在某个页中。然后通过链接指引在数据库中向前或向后滚动。
目前常用的AJAX分页中,有相当部分是一次取出数据库的所有内容,然后通过javascript在前段控制显示的数量。当然也有类似CI方式通过JSON进行分页的,不过实现起来比较繁琐,而且CI中get方式的支持不是很完善。
AJAX在客户端的优势是不言而喻的,但考虑到程序执行效率问题,大家的处理方式都基于什么观点呢?
先说下我的观点:
我个人不赞成在分页层面应用AJAX。虽然AJAX一次读取数据库(通过数组判断和运算及javascript在前台控制显示内容),纯CI分页两次读取数据(一次计算总数,一次取limit数据),但纯CI对数据库服务器的压力是可控的,可以无视数据库中数据总数。
发表于 2010-7-1 09:56:35 | 显示全部楼层
所有数据都读取到客户端肯定是不可行的,除非总数据量很小。
数据量大了,浏览器是承受不了的。
发表于 2010-7-1 12:44:57 | 显示全部楼层
ajax分页同样是去除总数,计算总页数,然后根据页数取每页该显示的数据,你说的的一次性读取根本不是ajax分页,而是js分页
发表于 2010-7-2 14:34:19 | 显示全部楼层
我个人比较喜欢CI的分页方式...
echo出来的东西也是一段html代码,利于搜索引擎的收录...
发表于 2010-7-2 14:44:23 | 显示全部楼层
我觉得在网站的后台也可以考虑使用ajax分页,我使用过ajax分页,只是这样无法在没有js支持的时候是使用。使用ajax分页和传统的分页没有什么差别,只是请求过程有js完成。
使用ajax请求还有一个好处是可以在客户端使用js缓存,请求一次数据后把这个分页的数据缓存到一个变量中,下一次(只要还在本页面中)就可以直接调用缓存。
发表于 2010-7-6 13:03:47 | 显示全部楼层
Ajax的精髓是读取改读取的数据,像一次全部读取,属于乱用Ajax。Ajax分页,每次都读取当前分页的内容,而不是把数据全部读取出来用js分页。
发表于 2010-7-6 14:24:59 | 显示全部楼层
试试把200w行数据发送到客户端是什么概念
且不说这200w行数据(姑且认为用js数组保存)在js中的效率
发表于 2010-7-6 19:28:45 | 显示全部楼层
发表于 2010-11-2 10:17:38 | 显示全部楼层
同意yunnysunny的
发表于 2010-11-3 13:55:13 | 显示全部楼层
分页主要需要四大元素
第一大:总行数
第二大:起始位置
第三大:每页显示行数

这三枚只是整形字段
你不用怕AJAX搞不起来
绝对可以

至于第四部分DATA内容看上去好像很大

起始也只包含当页应该使用的数据

如果你要做的是在线图像搜索

那么点一下下一页
AJAX导入后续URLS

如果你要做GOOGLE地图那样的程式。
也是用AJAX触发来导入需要的后续数据啊。

不仅仅是分页什么的
只要控制数量导入都可以的。
我的意见是能交给浏览器尽量交给浏览器
服务器操作太多影响速度。

本版积分规则