我需要表示一个表,其中包含关于一些测试及其结果的数据。
有超过100K个测试,每个测试有几个结果。
它需要显示设备的测试结果。
一个想法是从服务器和用jqGrid表示。
--------------------------
device |
--------------------------
| version1 |version2|
testA| failed | Passed |
testB|... | ... |
. |
. |
. |
-------------------------|
以下哪种方法是动态检索和表示数据的最佳方法,为什么?:
从服务器中检索所有数据并使用jquery和javascript进行过滤
从服务器中检索过滤后的数据,只表示它
回答这个问题并不像你想的那样是非黑即白。100k+记录是一个很大的数据集,不管使用的工具是什么显示它(…)以及人类有效理解它的能力)。用户是否可以处理(在客户机或服务器上)分页的数据,或者他们是否需要一次显示所有数据?如何以及何时需要过滤数据以使此工具对用户有用?一些注意事项:
- Javascript是健壮的,但是为了简单地显示大集合而进行的冗长的DOM更新会使一些较旧的浏览器(特别是IE6)负担过重,并导致它们锁定。你应该了解你的用户基础——如果他们大多使用较新的浏览器,那么这就不会是一个大问题。
- jqGrid有一个12k记录的演示(高级>>大集)。请注意,它们并没有加载整个文件。 最小化DOM更新。在内存中过滤数据,然后写入一次。
- UI,包括"加载"动画,dom屏蔽,按钮禁用等,将有助于阻止重复的服务器/过滤器请求从不耐烦的用户,只是可能导致这个web应用程序(或他们自己的浏览器)当试图使用数据集。
- 最小化用于样式化数据的javascript的数量(交替行类,行突出显示的翻转,之类的事情)。依赖CSS或禁用jQuery插件中的某些功能。这将有助于显示速度。
总是得到过滤后的数据:
- 数据库处理的行更少(如果索引正确)意味着数据库将更好地扩展。
- 通过网络发送的数据更少意味着它将更好地扩展
- 更少的数据在客户端被解析将提高感知性能
- 客户端的数据减少将减少内存占用
如果您的网格正在进行分页,那么您一次也只需要检索满一页的记录。
好运。
我认为100K条记录的传输量很大,而且可能对浏览器来说也太大了。
想象一下浏览器必须以HTML的形式获取的kb。我没有关于您需要添加到此页面的过滤器类型的信息,但是基于这100,000条记录的总大小,我非常确定您应该在服务器端上进行过滤和分页。用户几乎不可能愿意同时查看那么多的记录。
无论如何,我建议您检查网络使用成本和服务器端和客户端的可用处理能力来决定它。
但是网上有很多关于这个标准的文章