我目前正在处理具有大型数据集的 .NET (3.5) 页面,性能是坐在 2 个不同位置(相隔 12 小时)的用户的主要关注点。
目标和要求:
- 我的结果集大约包含 2500 条记录 x 30 列。
- 显示为带有客户端排序和大量单元格格式的表格 View 。
- 在相隔 12 小时的两个不同位置(一个位于网络浏览器旁边,另一个位于距网络服务器半个地球的地方),加载时间相当快。
我尝试了两种不同的方法,但无法同时满足两个用户。到目前为止,这是我尝试过的:
- 客户端网格
- 优点:
- 通过线路发送更小的数据包; Web 服务器正在发送 < 1 MB。通过网络更快
- 缺点:
- 生成网格的 Javascript/JQuery 过程需要 10 到 15 秒(不定)。
总结:客户端网格对于坐在离网络服务器距离的用户来说是有益的。但是,对于坐在服务器旁边的用户而言,情况并非如此。现在,坐在服务器旁边的用户将不得不坐下来等待 JQuery/Javascript 构建表格。
- 服务器端网格
- 优点:
- 渲染速度更快,因为如果不是全部标记,大部分标记都在网络服务器(服务器端)上完成。
- 缺点:
- 通过线路发送的大数据包; Web 服务器正在发送 3.5 - 5 MB。通过网络慢得多。 (检索 3.7 MB 的页面大约需要 30 多秒)
总结:服务器端网格对于坐在网络服务器旁边的用户来说是有益的(因为它加载几乎是即时的 - 3 MB 仅需 1 秒)。同样,对于坐在地球另一端的用户来说,网络传输也很痛苦 - 3.MB 页面需要 30 多秒。
经过谷歌搜索和实验;我还在为如何让这两个用户都满意而绞尽脑汁。
*注意:我决定不包含任何源代码,因为它不会以任何可能的方式帮助您。
我知道没有适合所有情况的解决方案,但我正在寻找至少能达到中间立场以满足这两个用户的解决方案。
一般来说,至少,我想给用户留下页面“加载”(快速)的印象——在所有数据到达之前开始渲染;尽管它可能仍在加载数据。 IE。也许无限滚动。
我正在寻找创意;因此,如果您的建议包括在全局范围内移动服务器;增加带宽或任何其他牵强附会的想法;如果您保留自己的想法,我将不胜感激。
谢谢。
D
最佳答案
- 您可以使用 server side paging在您的网格上 & 只需加载 10 个条目 每页
- 如果用户需要,您可以提供“下载为 pdf”文件选项 查看整个网格
您可以进一步使用客户端网格和服务器端分页来缩短访问时间。我认为带有服务器端分页的 gridview 就可以了。如果您需要一次显示所有记录,那么这是一个单独的问题。
关于c# - 网络性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968371/