如何优化我的网站:Rails?

3
我想让我的网站更快。我知道可以制作CSS雪碧图并压缩HTML和CSS来实现。
还有其他优化页面速度的方法吗?
例如这个页面:http://www.vinderhimlen.dk/konkurrencer/vind-elektronik,分享按钮、评分星级和Facebook点赞需要几秒钟才能加载。我真的想进行优化,但我认为仅仅最小化HTML和CSS是不够的。

1
你真的需要这么多分享按钮吗?我等了30秒,然后按下了停止按钮(我的连接速度是5Mbit/s)。 - Timofey Stolbov
4
好的,我会尽力将内容翻译成通俗易懂的中文。以下是需要翻译的内容:http://pagespeed.googlelabs.com/#url=http_3A_2F_2Fwww.vinderhimlen.dk_2Fkonkurrencer_2Fvind-elektronik&mobile=false这是一个网址链接,它指向 Google 实验室的页面速度测试工具。该工具可以分析一个网页的加载速度和性能,并提供改进建议。网址链接的具体内容是 http://www.vinderhimlen.dk/konkurrencer/vind-elektronik,可能与电子产品有关。 - Dogbert
@Timofey - 是的,它是网站的重要组成部分。能否使用JavaScript缓存这些按钮?它们速度很慢... - Rails beginner
你应该告诉我们你正在使用的Rails和Ruby版本,以及你使用的服务器安装设置。 - Thomas Andrews
4
在Firefox中安装YSlow插件并查看结果:51个外部Javascript文件;9个外部样式表;40个外部背景图片...这意味着需要向服务器建立100个连接才能加载一个页面! - Zabba
2个回答

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" - 来自Yahoo性能团队的Javascript/CSS压缩工具。

一旦确定问题所在,就可以更容易地聚焦并解决每个问题。


-1

你可以像你建议的那样做一些小事情,但最大的改进可能来自于使用选择性缓存或片段缓存。

尽可能缓存不经常更改的所有内容。当它们发生变化时,您始终可以使缓存的某些部分无效。

这是我能够使我的 RoR 站点变得足够快的唯一方法。


3
导致速度变慢的不是 Rails,而是所有图片、CSS和JavaScript文件,它们都是以静态方式提供服务。 - Andy Waite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接