我们正在尝试从使用 asp.net mvc 编写的单页应用程序中榨取尽可能多的性能。当前的布局是:
- 与 SQL 数据库对话的 Asp.net mvc 服务器端
- 使用 JS/Html5 + requireJS 和 KendoUI 编写的客户端 SPA
我们的主要性能问题似乎是 SPA 方面与服务器之间的交互非常频繁,以检索当前页面所需的 JS 和 HTML 文件,并通过 mvc WebApi 从 SQL DB 推送和提取数据。
我想对我们的架构进行一些改变,以限制客户端浏览器和服务器之间的通信。我正在阅读有关服务器端渲染的所有内容,但此时将其放入成熟的应用程序似乎将是一次重大重写。
只是想知道是否有人对解决此问题的方法以及要检查的库有任何建议?
最佳答案
我在这个答案中假设您的性能问题是可用性问题:用户感觉应用程序很慢。如果是这样,您应该意识到人们真正记住的不是应用程序速度慢,甚至很难完成他们试图做的任务(抱歉,我无法立即找到该研究/结论的来源) .
但是无论如何。我首先要区分两个完全不同的东西:
- 检索,或者更确切地说,捆绑静态文件
- 对服务端点的 ajax 调用
静态文件问题不是问题。它不应该涉及任何架构变化,但这是一个学习曲线。您可以使用WebGrease来解决它(或替代方案)和/或使用 BundleConfig 。这两个都是现成的 aspnet 模板项目的一部分。
API 调用的繁琐程度非常不同。解决这个问题需要检查您的服务和应用程序设计。我可能会
- 从背景阅读开始,例如websearch q=reduce+chattiness+of+service+design .
- 绘制一些客户端与服务器对话的序列图;以及这些对话何时触发的草图。
- 根据这些图片,开始思考如何才能减少对话:
- 静态/可缓存数据可以一次性获得吗?
- Ajax 数据读取一次可以获得更大的数据量吗?
- 并且,异步模式是否可以用来表示用户不会看到任何延迟? Ajax 数据推送应该是异步的,因此不应造成较大的性能损失 - 除非应用程序的结构方式使得用户等待数据推送完成才能继续操作。
- 研究应用程序(facebook、trello)的 UI 设计,这些应用程序在后台推送数据,这样用户就无需等待。
最后,我回到我的开场白,这可能完全与用户体验设计有关,而不是底层性能。用户可以相当轻松地完成任务吗?有没有实际用户告诉您它很慢,或者您只是假设它很慢?与用户坐在一起,观察他们如何工作;究竟是什么困扰着他们?
关于javascript - Asp.net mvc SPA 应用程序服务器端渲染以提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817591/