我正在建立一个工作网站,更重要的功能之一就是显示数据的丰富内容网格。默认情况下,它每页仅显示20个项目,但是我们在数据库中有约200个项目可以过滤,排序和搜索。
我们的销售和营销团队还要求“全部列出”功能,以便他们可以将所有数据显示在一个位置并滚动而不是逐页浏览数据。
整个系统使用服务器端的ASP.Net MVC,客户端的jQuery和Flexigrid构建,并使用JSON通过AJAX在两者之间交换数据。
我已经掌握了实际的数据传输部分。整个请求的20页结果需要800毫秒(通过Flexigrid将请求发布到服务器并获取响应)。客户端处理需要花费更多时间。
我可以将一些客户端处理工作卸载到服务器上。但这将使服务器端操作花费更长的时间,并使返回的文档大小大得多。在高速Internet连接的情况下这不是问题……但这不是必然的情况。
我的另一个选择是下载尽可能多的数据,并将大部分数据处理移交给客户端。这将请求时间减少到基本上为零(仅获取更改的元素,而不是整个数据集)。它在具有快速CPU和大量RAM的机器上将可以很好地工作,但这不是必须的。
由于至少有一个人将其标记为“不是一个真正的问题”,所以让我澄清一下...
最佳答案
您正在花费这么长时间在客户端处理什么?处理JSON对象(即使是很大的对象)也不会太费力。
编写数据客户端时,很多DOM查询可能会使速度变慢。减少DOM查找可以极大地提高性能。我认为,平衡服务器和客户端处理的良好做法是在服务器上出错。由于服务器在您的控制之下,因此您始终可以选择升级服务器。将大部分处理保留在服务器上还将使移动设备和旧计算机的工作变得更容易。
您应该以增强用户体验的方式利用AJAX和客户端功能。根据用户要求加载和处理数据。通过仅加载他们的请求,您可以减少服务器和客户端上的负载。
如果您还一遍又一遍地请求相同类型的数据,则可以查看服务器和客户端缓存。通过使用缓存,您可以减少请求时间和/或带宽。
关于asp.net-mvc - 客户端与服务器交互的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7973941/