分页:服务器端或客户端?
什么是最好的处理分页? 服务器端或dynamic使用JavaScript?
我正在研究一个沉重的ajax项目,并dynamic地提取数据,所以我一直在研究一个使用dom的javascript分页系统 – 但是我开始认为最好是处理所有这些服务器端。
每个人的想法是什么?
正确的答案取决于您的优先级和要分页的数据集的大小。
服务器端分页是最好的:
- 大数据集
- 更快的初始页面加载
- 那些没有运行javascript的可访问性
客户端分页是最好的:
- 小数据集
- 更快的后续页面加载
所以,如果你主要是出于美观的原因进行分页,处理客户端更有意义。 如果你想缩短初始加载时间,服务器端是明显的select。
当然,如果您使用Ajax加载后续页面,客户端在后续页面加载时间上的优势会减less。
在客户端执行此操作将使用户首先下载可能不需要的所有数据,并将删除分页的主要优点。
对于这种types的AJAX应用程序,最好的办法是让AJAX调用下一页的服务器,并使用客户端脚本添加更新当前页面。
如果你有大页面和大量的页面,你最好通过AJAX从服务器中请求页面。 所以,让服务器根据您的请求URL进行分页。
您还可以预先获取用户可能会查看的接下来的几页,以使界面看起来更具响应性。
如果只有几页,那么抓住这一切,并在客户端分页可能是一个更好的select。
服务器端 – 为当前视图发送足够的内容给客户端。
即使数据量小,最好的select是服务器端分页。 如果您的Web应用程序进一步扩展,您将不必担心。
对于更大的数据大小,答案是显而易见的。
你的意思是说,你的JavaScript有内存中的所有数据,并且每次显示一页? 或者,它使用AJAX,根据需要从服务器下载每个页面?
如果是后者,你也可能需要考虑分类。 如果您使用JavaScript进行sorting,则只能一次sorting一页,这没有多大意义。 所以你的sorting应该在服务器上完成。
在一个实际的限制世界中,我将在服务器端分页以节省与发送数据相关的所有资源。 此外,服务器需要保护自己免受恶意/故障客户端请求一个巨大的页面。
一旦这个代码快乐地跳出来,我会添加“智能”到客户端来获得“下一个”和“前一页”,并将其保存在内存中。 当用户翻到下一页时,更新caching。
如果客户端软件进行这种页面caching,请考虑数据的老化速度(可能会改变),以及是否应该检查caching页面的数据是否仍然有效。 如果时间超过2分钟,可能会重新申请。 也许有一个“脏”的国旗在里面。 就是这样 希望你觉得这有帮助。 🙂
我更喜欢服务器端分页。 但是,在实现它时,您需要确保正确地优化SQL。 例如,我相信在MySQL中,如果你使用LIMIT选项,它不使用索引,所以你需要重写你的sql来正确使用索引。
G-人