【问题标题】:Rails how to optimize my website?Rails 如何优化我的网站?
【发布时间】:2011-10-23 21:02:34
【问题描述】:

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

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

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

加载分享按钮、评分星星和 Facebook 喜欢需要几秒钟。我真的很想优化它。我只是认为最小化 HTML 和 CSS 是不够的。

【问题讨论】:

  • 真的需要这么多分享按钮吗?我确实等了 30 秒并按下停止按钮(在我的 5Mbit/s 连接上)。
  • @Timofey - 是的,它是网站的重要组成部分。是否可以 JavaScript 缓存这些按钮?他们的速度很慢......
  • 您应该告诉我们您使用的是什么版本的 Rails 和 Ruby,以及您使用的服务器安装设置。
  • 在 Firefox 中安装 YSlow 插件并查看结果:51 个外部 Javascript; 9个外部样式表; 40 个外部背景图像...要与服务器建立 100 个连接以加载一个页面!

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


【解决方案1】:

无论您如何扩展或提高 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 压缩工具。

一旦您确定了问题所在,就更容易归零并解决每个问题。

【讨论】:

    【解决方案2】:

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

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

    这是我能够通过 RoR 网站制作的唯一方法,甚至可以忍受得很快。

    【讨论】:

    • 导致它变慢的不是 Rails,而是所有的图像、CSS 和 JavaScript,它们都是静态提供的。
    猜你喜欢
    • 1970-01-01
    • 2012-08-10
    • 2020-12-02
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2023-03-31
    相关资源
    最近更新 更多