什么是客户端 - 服务器交互的最佳实践?

EAM*_*ann 9 ajax asp.net-mvc flexigrid

我正在构建一个工作网站,其中一个更重要的功能是显示数据的丰富内容网格.默认情况下,它每页只显示20个项目,但我们在数据库中有大约200个项目可以进行过滤,排序和搜索.

我们的销售和营销团队还要求"全部列出"功能,以便他们可以在一个地方显示所有数据并滚动浏览而不是翻阅数据.

Flexigrid数据

整个系统使用服务器端的ASP.Net MVC,客户端的jQuery和Flexigrid构建,并使用JSON通过AJAX在两者之间交换数据.

我已经得到了实际的数据传输部分非常可靠.一个20页的结果页面需要800毫秒的整个请求(通过Flexigrid向服务器POST请求并获得响应).更多的是客户端处理需要一段时间.

我可以将一些客户端处理卸载到服务器.但这会使服务器端操作花费更长时间并使文档的大小返回更大.在高速互联网连接的情况下不是问题......但事实并非如此.

我的另一个选择是尽可能多地下载数据并将大部分数据处理转移到客户端.这将请求时间减少到基本为零(仅获取更改的元素而不是整个数据集).它在具有快速CPU和大量RAM的机器上运行良好,但情况也不一定如此.

由于至少有一人将此标记为"不是真正的问题",让我澄清一下......

  • 我可以做些什么来减轻客户端处理时间问题,而无需将太多处理移动到服务器上,最终导致数据传输时间问题?
  • 在平衡客户端处理与服务器端处理时,有哪些最佳实践?
  • 在服务器端或客户端犯错是否更好?
  • 我可以使用哪些工具来更好地优化这些交换,以便事情不会继续出错?

Kev*_*n M 2

您在客户端处理什么花了这么长时间?处理 JSON 对象(即使是非常大的对象)不应过于密集。

在客户端编写数据时进行大量 DOM 查找可能会减慢速度。减少 DOM 查找可以极大地提高性能。我相信平衡服务器和客户端处理的良好做法是在服务器上出错。由于服务器在您的控制之下,您始终可以选择升级服务器。将大部分处理保留在服务器上也将使移动设备和旧计算机的处理变得更容易。

您应该以增强用户体验的方式利用 AJAX 和客户端功能。根据用户的请求加载和处理数据。通过仅加载他们请求的内容,您可以减少服务器和客户端的负载。

如果您还一遍又一遍地请求相同类型的数据,您可以查看服务器端和客户端缓存。通过利用缓存,您可以减少请求时间和/或带宽。