2011-09-10 21 views
2

在一个高度AJAX网站中,网页的内容被AJAX部分更新,它基本上改变了HTML标签或网页的一部分。哪一个更高性能:XmlHttpRequest响应为HTML或JSON?

因此,我们需要做出决定:

  1. 服务器端渲染HTML标签和响应的XmlHttpRequest返回。浏览器JavaScript只是用XHR响应改变容器的innerHTML;

  2. 服务器端以JSON格式返回数据。浏览器JavaScript根据JSON呈现HTML,然后更改容器的innerHTML。

从性能角度来看,哪种方法更好?

就性能而言,我指的是最终用户的感知性能,这受服务器端花费的时间,网络和客户端浏览器花费的时间影响。

+0

@关闭器:这不是一个真正的问题?我在这里看到真正的价值。 –

回答

3

最有可能的JSON版本更快,因为有了它,你必须通过网络传输更少的位。与可能的网络延迟相比,在浏览器中呈现HTML速度很快。只需使用一些预编译模板的客户端模板语言即可。像Handlebars.js

另外,如果您想要使用其他功能,JSON更具通用性。我会毫无疑问地使用JSON。

+0

准确地说,我会说。 +1 –

+0

在这种情况下,JSON可能比纯HTML大。例如twitter.com是其开放API的Web客户端。响应中包含一些实际上未在网络中使用的数据。 –

2

如果我们把客户端表现出来的公式,还有,你可能要衡量两件事情:传输数据的

  1. 长(因为网络是瓶颈这里迄今为止,较短的请求无论是从客户端还是从服务器实现都会更高效)。
  2. 在服务器端生成所述数据所用的时间。

这些指标听起来就像是使用JSON或HTML非常接近,以至于“忘记它,做更方便的事情”。但是,如果你认真对待每一次性能下降,这些指标就是你应该用来决定的。

+0

在我的实验中,客户端渲染(带胡须和ClousreTemplates)比服务器端渲染花费更多的时间。无论如何,笔记本电脑和台式机CPU不如服务器强大。 –

+0

@MorganCheng:我假设你并不关心客户端的性能。如果不是这样,请编辑该问题以说明问题。 – Jon

+0

已编辑。 “表现”是指最终用户的感知表现。 –

1

如果您需要发送html格式的数据,我会选择直接的HTML响应。

使用JSON时,您必须创建一个属性才能知道它是哪个标记,而另一个则包含它所包含的数据。如果你有很多嵌套标签,它将开始变得不可读,并且容易出错。

或者,您可以发送一个JSON,只包含一个包含所有HTML的字符串的属性。但是,纯HTML仍然是最好的。

无论如何,我不认为你会看到任何性能差异。

+0

标签问题很容易处理客户端模板。无需将HTML搞乱成JSON。这一切都很干净简单。 – Epeli

+0

如果您使用客户端模板,则为true。我不是例如。 –

+0

将HTML放入JSON属性是一个坏主意。 JSON不擅长以长字符串作为属性。它伤害了性能。 –

0

我会说性能不是这里的问题,但应该遵循的最佳实践。
如果你有一个高度ajax网站,你应该考虑一个SOA架构。
REST在这里特别有用,因为您实际上可以请求在您请求的MIME类型上使用这两种格式。
您应该使用Accept和Content-Type HTTP标头来请求正确的格式并检查它是否被正确接收。
因此,这可以让您变得灵活并根据您的需求选择最合适的表示。
您应该阅读有关REST herehere

相关问题