0

我正在考虑通过将渲染移至客户端来提高网站性能。当前堆栈是:(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,性能会有什么不同?

4

2 回答 2

1

1, 2) 可能是的,但可能有许多因素可能导致性能提升低于您的预期。就像,如果瓶颈是 IO,并且由于 HTML 创建可能受 CPU 限制,那么减少 CPU 负载只会让 CPU 更加空闲。真正找出答案的唯一方法是在运行并行请求处理时拥有可靠的基准,并获得硬数字。

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

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

4)好吧,我不确定我是否理解这个问题,但请参阅答案 1,2 ......

于 2012-12-17T09:07:26.367 回答
0

请参阅http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/ 也许这会对您有所帮助

为您找出特定情况的最佳方法是实施它并进行测试。您可以使用 new relic 和 google 分析(也许还有其他)来查看客户端性能和渲染时间和体验

于 2012-12-17T08:37:25.543 回答