JSON或HTML:哪个输出可以更好地执行?

时间:2012-12-17 08:27:43

标签: html ruby json performance

我正在考虑通过将渲染移动到客户端来提高网站性能。当前堆栈为:(router, sphinx, db) + HTML。我正在考虑将其更改为:(router, sphinx, db) + JSON

所有客户端都在运行i7处理器,他们并不关心客户端渲染性能。我们还有客户端应用程序,可以连接到非常好的JSON API(这不是讨论客户端与服务器端呈现)。

1)在服务器上渲染大约需要20%的时间(80%用于路由,sphinx,db)。我听说输出JSON大约需要输出HTML的一半时间,所以我认为它会提高10%,而这10%可以用于数据处理。我是对的吗?

2)我相信一台服务器的10%改进意味着,为了获得与100台物理服务器的大规模应用程序相同的性能,我们需要减少10%的服务器:在这种情况下,90而不是100。这是正确的吗?

3)如何在Ruby中获得最佳性能以输出JSON而不是任何其他格式?

4)在每日场景中,如果我们输出JSON而不是HTML,那么可以在性能方面做出哪些改变呢?

2 个答案:

答案 0 :(得分:1)

1,2)可能是的,但可能有不计数的因素,这可能会使性能提高到低于您的预期。比如,如果瓶颈是IO,并且由于HTML创建可能是CPU限制的,那么减少CPU负载只会让CPU空闲更多。唯一能找到答案的方法是在运行并行请求处理时获得可靠的基准测试,并获得硬数据。

此外,花费时间开发客户端渲染可能比仅仅支付更多服务器容量更昂贵......摩尔定律仍然存在,对这种小改进进行这种优化可能不值得开发成本......可能更好地将那些开发资源集中在可以增加收入的东西上,而不是试图节省少量资金。

3)JSON生成可能使用本机库,而HTML生成则发生在Ruby脚本代码中。在低级别操作中,本机代码通常比解释(而不是JIT编译)代码快1-2个数量级。更高级别的操作,差距越窄,因此如果“生成JSON”是高级操作,那么如果从Ruby或编译语言代码调用它,它同样快。

4)嗯,不确定我理解这个问题,但请看答案1,2 ......

答案 1 :(得分:0)

请参阅http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/或许可以帮助您

找出特定情况的最佳方法是实施和测试。 您可以使用新的遗物和谷歌分析(也许还有其他人)来查看客户端性能和渲染时间和体验