我目前正在处理具有大型数据集的 .NET (3.5) 页面,性能是坐在 2 个不同位置(相隔 12 小时)的用户的主要关注点。
目标和要求:
- 我有一个大约 2500 条记录 x 30 列的结果集。
- 显示为带有客户端排序和大量单元格格式的表格视图。
- 在相隔 12 小时的两个不同位置加载时间相当快(一个位于 Web 浏览器旁边,另一个位于 Web 服务器的半个地球)。
我尝试了 2 种不同的方法,但无法满足两个用户。这是我到目前为止所尝试的:
- 客户端网格
- 优点:
- 通过线路发送的较小数据包;Web 服务器正在发送 < 1 MB。通过网络更快
- 缺点:
- 生成网格的 Javascript/JQuery 过程需要 10 - 15 秒(不定)。
总结:客户端网格对于远离Web 服务器的用户是有益的。但是,对于坐在服务器旁边的用户而言,情况并非如此。现在坐在服务器旁边的用户将不得不坐下来等待 JQuery/Javascript 来构建表格。
- 服务器端网格
- 优点:
- 大多数(如果不是全部)标记都在 Web 服务器(服务器端)上完成,因此渲染速度更快。
- 缺点:
- 通过网线发送的大数据包;Web 服务器正在发送 3.5 - 5 MB。通过网络慢得多。(检索 3.7 MB 的页面大约需要 30 多秒)
总结:服务器端网格对坐在Web 服务器旁边的用户是有益的(因为它几乎是瞬间加载的—— 3 MB 只需 1 秒)。同样,对于坐在地球另一端的用户而言,网络传输会受到网络传输的影响——3.MB 页面需要 30 多秒。
经过谷歌搜索和实验;对于如何让这两个用户都满意,我仍然摸不着头脑。
*注意:我决定不包含任何源代码,因为它不会以任何可能的方式帮助您。
我知道没有一种适合所有解决方案的解决方案,但我正在寻找至少能够满足这两个用户的中间立场。
一般来说,至少,我想给用户一个页面已经“加载”(快速)的印象——在所有数据到达之前开始渲染;尽管它可能仍在加载数据。即无限滚动也许。
我正在寻找有创意的想法;因此,如果您的建议包括将服务器移动到全球的一半;增加您的带宽或任何其他牵强的想法;如果您对自己的想法保密,我将不胜感激。
谢谢。
D