Rails如何优化我的网站?

时间:2011-06-12 20:06:14

标签: ruby-on-rails performance ruby-on-rails-3 optimization

我想让我的网站更快。我知道我可以制作CSS精灵并压缩我的HTML和CSS。

还有其他方法可以优化我的网页速度吗?

此页面就是一个例子:http://www.vinderhimlen.dk/konkurrencer/vind-elektronik

加载共享按钮,评级星和Facebook喜欢需要几秒钟。我真的想要优化它。我只是不认为最小化HTML和CSS就足够了。

2 个答案:

答案 0 :(得分:6)

无论您如何扩展或提高Rails的性能,您都希望在之前和之后采用基准测试。可以很容易地安装最新的性能增强插件或复制别人的技术,但是如果不测量执行时间,你将无法知道你正在做的事情是否会提高性能或降低它的性能。

表现是相对的,可能因许多因素而异。性能的两个方面对于扩展Rails非常重要:

  • 延迟 - 我们能以多快的速度回复请求?这是以请求和响应之间经过的时间来衡量的。
  • 吞吐量 - 我们可以在给定的时间内处理多少个请求?这是以每秒响应数来衡量的。

在我们进行一般性能测试后,我们可以很容易地看到瓶颈开始出现。此时,我们可以进一步使用打包工具将焦点范围缩小到以下一个或多个范围,这些范围最常见,最不常见:

  • 数据库问题:自定义SQL不正确,连接和关联不正确或不正确,数据库表格过大等等。
  • 模型问题:业务规则过于复杂或设计不正确。
  • 前端视图问题:糟糕的HTML或CSS选择,极大的javascript库,未优化的图像等。
  • 交易问题:运行的Mongrel(或其他应用服务器)实例太少,硬件不足,写入不良或控制器不正确,应用程序架构不正确等等。

通常人们认为交易问题是导致业绩不佳的原因,而更常见的是由其他类型的问题引起的。

如果您的设计设计不合理的SQL,非常大的数据库表或非最佳的连接或关联,无论您投入多少硬件,都可能永远不会提高性能。你的Rails应用程序不会扩展。同样的事情也适用于某些交易问题。在设计和编码开发阶段遵循不良做法时,会出现大多数可扩展性问题。

以下工具将有助于确定您的瓶颈所处的位置......

  • query_analyzer” - Bob Silva用于自动解析每个查询的MySQL工具。
  • ruby-prof” - 用C编写的快速Ruby代码分析器。
  • pl_analyze” - 由Eric Hodel撰写,分析了SysLogLogger的记录器输出。
  • yslow” - 用于衡量和确定特定网页速度缓慢原因的Firebug插件。
  • YUI compressor” - 来自雅虎表现团队的Javascript / CSS压缩工具。

一旦确定存在问题的位置,就可以更容易地将问题归零并解决每个问题。

答案 1 :(得分:-1)

你可以按照你的建议做一些事情,但是使用选择性缓存或片段缓存可能会带来最大的改进。

缓存您不能经常更改的所有内容。您可以在更改时始终使部分缓存无效。

这是我能够通过RoR网站制作的唯一方式,即使是相当快的。