我正在考虑通过将渲染转移到客户端来提高网站性能。当前堆栈是:(router, sphinx, db) + HTML
。我正在考虑将其更改为:(router, sphinx, db) + JSON
。
所有的客户端都运行i7处理器,它们并不太关心客户端的渲染性能。我们还有客户端应用程序,它可以连接到resful JSON API (这不是关于客户端与服务器端渲染的讨论)。
1)在服务器上渲染需要大约20%的时间( 80%用于路由、sphinx、db)。我听说输出JSON花费的时间大约是输出HTML的一半,所以我认为会有10%的改进,而这10%可以用于数据处理。我说的对吗?
2)我认为,一台服务器的10%的性能提升意味着,要在具有100台物理服务器的大型应用程序中获得相同的性能,我们需要减少10%的服务器:在本例中是90台而不是100台。这是正确的吗?
3)如何在Ruby中获得最佳性能,以输出JSON而不是任何其他格式?
4)以日常场景为例,如果我们输出JSON而不是HTML,性能会有什么不同?
发布于 2012-12-17 17:07:26
1,2)可能是这样的,但可能有一些未被计算在内的因素,这些因素可能会使性能提高比您预期的要小。例如,如果瓶颈是IO,并且HTML创建可能是CPU限制的,那么减少CPU负载只会让CPU更空闲。唯一能找到答案的方法就是在运行并行请求处理时进行可靠的基准测试,并获得可靠的数据。
此外,花费几个小时来开发客户端渲染可能比仅仅支付更多服务器容量更昂贵……摩尔定律仍然成立,为这么小的改进做这样的优化可能不值得开发成本……也许更好的做法是将这些开发资源集中在可以增加收入的事情上,而不是试图节省一点。
3) JSON生成可能使用本机库,而HTML生成是在Ruby脚本代码中生成的。在低级操作中,本机代码通常比解释的(非JIT编译的)代码快1-2个数量级。操作级别越高,差距就越小,所以如果“生成JSON”是高级操作,那么从Ruby或从编译语言代码调用它的速度也是一样快的。
4)嗯,我不确定我是否理解了这个问题,但是请看答案1,2...
发布于 2012-12-17 16:37:26
看http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/也许这会对你有帮助
为您的特定情况找出的最好方法是实现它并进行测试。您可以使用新的relic和google分析(也可能是其他分析)来查看客户端性能、渲染时间和体验
https://stackoverflow.com/questions/13910635
复制相似问题