因此,我正在开发一个应用程序,该应用程序在后端使用 Web 服务来发送 JSON 有效负载,然后通过专有的 Javascript MVC 框架在客户端呈现。
在我们的特定应用程序中,我们有一个多页表单向导。所有页面都是可定制的,因此我们必须发送所有布局信息以及填充它的数据。模板存储在 html 中,然后在客户端从 DOM 中删除并缓存以供重复使用。
这里与我通常看到的不同的是,整个表单的所有数据都在单个 Ajax 调用中加载,然后在应用程序响应之前呈现所有内容。这可能需要(取决于设置的大小)5、10、20 秒。
加载表单后,一切都很快并且运行良好。您无需等待一次即可完成整个过程。然后,当您完成并提交时,ajax 调用也可能需要 10-20 秒才能返回并显示确认。这是因为我们在进行过程中并没有真正向服务器发送任何内容,而是在最后保存了所有内容。
回顾一下:
获取巨大的 JSON 有效负载(等待)> 渲染所有内容(等待)> 用户完成表单(所有客户端)> 用户提交整个表单(等待)> 确认页面
大部分时间都花在第 2 步渲染所有内容上。
我加快速度的想法有以下几点:
1)分解ajax调用。而不是获取整个表单,而是对每个页面进行 ajax 调用,将它们全部发送出去并开始在其回调方法中呈现该页面。
2)目前一切都在客户端呈现,我正在考虑如何在我们等待数据时在服务器上预呈现一些页面(在单独的线程中?)。
作为参考,我们在 ASP.NET 环境中,后端的 ASMX Web 服务和客户端的内部框架,我们确实有可用的 jQuery。