性能

时间:2017-01-23 23:34:31

标签: javascript c# asp.net asp.net-mvc serverside-rendering

我们试图从用asp.net mvc编写的单页应用程序中挤出尽可能多的性能。目前的布局是:

  • 与SQL数据库对话的Asp.net mvc服务器端
  • 使用JS / Html5 + requireJS和KendoUI
  • 编写的Clientside SPA

我们的主要性能问题似乎是SPA方面对服务器来说非常繁琐,以检索当前页面所需的JS和HTML文件,以及通过mvc WebApi从SQL DB推送和提取数据。

我想改变我们的架构以限制客户端浏览器和服务器之间的干扰。我正在阅读有关服务器端渲染的所有内容,但此时似乎将重要的重写放入成熟的应用程序中。

只是想知道是否有人对方法论有任何建议来解决这个问题以及任何图书馆要结账?

1 个答案:

答案 0 :(得分:1)

我在这个答案中假设您的性能问题是可用性类型:用户感觉应用程序很慢。如果是这样你应该意识到人们实际记得的不是,应用程序是否缓慢,以及完成他们试图完成的任务很困难(抱歉,我无法立即找到该研究的来源/结论)。

但是还是。我首先要区分两个完全不同的东西:

  • 检索或更确切地说,捆绑静态文件
  • ajax调用服务端点

静态文件问题不是问题。它不应该涉及任何架构变化,而是一个学习曲线。您可以使用WebGrease(或替代方案)和/或使用BundleConfig来解决此问题。这两个都是开箱即用的aspnet模板项目的一部分。

api调用的烦恼是非常不同的。解决这个问题是审核您的服务&应用设计。我可能会

  1. 从背景阅读开始,例如websearch q=reduce+chattiness+of+service+design
  2. 绘制客户端与服务器对话的一些序列图;以及触发这些对话的草图。
  3. 根据这些图片,开始考虑如何减少对话:
    • 静态/可缓存的数据可以获得一次重大打击吗?
    • Ajax数据读取能否在一次点击时获得更大的数据?
  4. 并且,异步模式可以用来表示用户没有看到任何延迟吗? Ajax数据推送应该是异步的,因此不应该导致大的性能损失 - 除非应用程序的结构使得用户在继续之前等待数据推送完成。
    • 研究应用程序的UI设计-facebook,trello-它们的数据在后台推送,以便用户不会等待。
  5. 最后,我回到开头,可能是关于用户体验设计而不是引擎盖性能的全部内容。用户可以相当轻松地完成任务吗?有任何实际用户告诉你它很慢,或者你只是假设它?与用户坐在一起观察他们的工作方式;什么实际上是在窃听他们?