ajax应用程序的分页设计模式



我正在构建一个ajax应用程序,我可以选择如何构建数据分页功能。基本上,用户要处理1000-2000条记录,但只有20条记录同时从数据库加载,发送到客户端,然后缓存在本地会话存储中。这些记录是json字符串,包含对象的属性(基本上是客户记录)。

这里有两个选项,假设我们处理的是1500条记录,每页有20条记录难题在于将1500个记录ID存储在哪里

选项1: 1500条记录的ID被存储为服务器会话上的int列表,并针对每个请求进行序列化和反序列化。客户端不知道每个页面的记录ID,只是请求一个页码。在服务器上,当用户请求页面X时,我们查看int列表,确定页面X的记录ID,加载这些记录,并向客户端发送带有这些ID的json字符串。这里的缺点是,我们在服务器会话上携带了一个1500 int的列表。好处是,当我们请求页面时,我们只向服务器发送一个int.

选项2: 1500条记录的ID在用户登录时发送到客户端,然后该列表存储在本地存储会话中。当用户请求页面X时,javascript函数会确定哪些记录ID在页面X上,并向服务器发送一个20 int的json序列化列表。然后,服务器返回具有这些ID的记录。好处是,服务器端会话要轻得多,这应该会提高性能(无需在每次请求时读取/写入/序列化该列表),并且可能更具可扩展性。缺点是,每次请求页面时,我们都会向服务器发送一个包含20 int的列表。

我倾向于选择2:这是最好的方法吗?

注意1)我要求用户支持HTML5本地存储,2)服务器端实现将是azure和WCF。

也许我有误解,但我并不真正理解你的方法。如果您知道页面长度和所需的页码,为什么不能在ajax调用中将这些参数作为参数发送到服务器,然后在数据库的sql语句中将其限制为这个值呢。我想说的是,首先知道这些身份证有什么意义。例如,看看jquery datatables插件是如何在这里执行分页的:http://www.datatables.net/examples/server_side/server_side.html。正如您所看到的,他们使用将页码和页面位置发布到服务器的方法。然后,基于此限制想要返回的行非常容易(至少在Oracle、MySQL和MSSQL中是这样)。除非我完全没有抓住要点,否则请告诉我。

最新更新