哪个更好:在服务器上或在JS上的客户端上呈现HTML?

时间:2010-12-03 19:11:47

标签: javascript html asp.net-mvc performance

我有最佳做法/表现问题。我正在创建一个ASP.NET MVC 2项目,我在页面的几个部分可以在加载时或用户交互时动态访问。

我的问题是:在服务器上用HTML呈现部分然后只是替换HTML部分或者更好地将信息作为JSON对象检索然后使用JS来创建和插入HTML?

应该注意的是,关注的对象本质上非常简单。一个例子是一个'message'对象,它有一个ID字段,一个to字段,一个from字段,一个subject字段和一个body字段,都是字符串。

这两种方法都有一些严重的优点或缺点吗?或者这是一个偏好如何构建您的应用程序的情况?

4 个答案:

答案 0 :(得分:2)

考虑以下问题:

  1. 在客户端上拥有原始数据会有什么好处吗?在某些情况下,页面的其他部分使用数据。在这些情况下,通过网络发送数据可能更有意义。

  2. 是否存在潜在的性能差异?考虑总管道。发送HTML可能很冗长,但在服务器上渲染速度更快?渲染的HTML可以缓存在服务器上吗?

  3. 如果这些都没有将你推向一个方向或另一个方向,那么我选择更易维护的代码库。这不仅取决于具体问题,还取决于团队的技能。

    鲍勃

答案 1 :(得分:1)

我认为两者都不是更好;它将取决于您的要求。问题是边界无法回答。您是否正在使用客户端上的数据进行进一步的计算或操作,或者您只是将一些东西用于显示?

在这两种情况下,您都在输出文本数据,尽管将数据结构直接表示为JSON比将数据结构转换为HTML更容易,并且直接显示HTML比JSON更容易。

答案 2 :(得分:1)

许多框架都有相对较慢的渲染库(模型 - 视图 - 控制器架构的View部分。)原因是渲染库需要解析/执行View特定于域的语言来替换变量等。

根据您应用的规模,让客户端的浏览器执行渲染可能会快得多。但是,以一致的方式将View计算移动到客户端可能很棘手。

Google的Closure compiler包含模板库。另一种选择是液体。它有Javascript.NetRuby实现。

答案 3 :(得分:0)

正如乔纳森已经说过的那样,我不认为你的问题有一个简单的是/否答案。

唯一尚未提及的因素是服务器端执行更具可预测性,而客户端执行不受您的控制,可能因浏览器而异。这实际上可能不是内部网站点上的因素,但如果受众多样化,则可能变得很重要。现代Javascript库通常(并不总是)保护我们免受浏览器怪癖的影响,但旧版浏览器也可能存在特定的性能问题(性能确实不应该是您的主要标准,除非您尝试它并且它是可怕的)。

选择您认为最舒适的解决方案可能是最佳选择。