【问题标题】:Asset managing with Rails 3 (on Heroku) (Jammit, AssetHat, Rack PageSpeed)使用 Rails 3 进行资产管理(在 Heroku 上)(Jammit、AssetHat、Rack PageSpeed)
【发布时间】:2011-09-03 11:44:47
【问题描述】:

我对 Rails 3.0.x(尤其是 Heroku)中管理资产的不同工具的优缺点感兴趣。

已经有一些关于此主题的older 问题,但同时有一些新工具可用。

我对这些工具特别感兴趣:

Jammit 似乎可以做 AssetHat 可以做的所有事情,而且可用时间更长。那么 AssetHat 适合在哪里呢?

Rack PageSpeed 似乎通过直接处理服务器响应来即时完成所有工作。你这样做有没有遇到任何性能问题?您会推荐它而不是其他两种解决方案吗?

【问题讨论】:

    标签: ruby-on-rails heroku asset-management


    【解决方案1】:

    大家好,我是 AssetHat 的作者。缩小和连接是最容易实现的性能提升之一;这些功能对 Jammit、AssetHat 和 rack-pagespeed 是通用的。 Rails 已经支持串联很长时间了(尽管它是在运行时完成的,而不是在部署期间完成的),而且 Rails 3.1 在部署期间支持缩小和串联也就不足为奇了。

    其余的功能使这些资产管理器中的每一个都变得有趣。例如,如果您想将图像和字体文件直接嵌入到样式表中,Jammit 就很有用。如果您想将所有优化保存在一个完全独立的层中,rack-pagespeed 也很方便。

    将资产内联到 CSS 中非常适合样式表不经常更改的静态页面。但是,如果您的站点正在积极开发中,并且样式表发生了微小的变化,则用户的浏览器必须重新下载整个内容——包括可能没有更改的内联图像和字体。这取决于您的项目的性质。

    如果您的资产太大而无法内联或串联,AssetHat 有助于优化 CDN 和并行加载:

    • 它充分利用了 CDN,无论是 Google's CDNcdnjs(使用 Amazon 的服务器)还是您选择的其他 CDN。例如,只需将<%= include_js :jquery %> 添加到您的布局(以及配置文件中的版本号)即可从 Google 的 CDN 加载 jQuery。如果您处于开发模式并且拥有 jQuery 的本地副本,则会加载它——轻松离线开发。
    • AssetHat 可以重写样式表的图像 URL 以使用您的 CDN。这从您的 config.action_controller.asset_host 设置中读取,并在部署时完成。您的原始 CSS 保持不变。
    • 如果要加载多个 JS 文件,有时并行加载它们比连接它们更快(即强制它们串行加载)。您可以轻松开启LABjs模式<%= include_js 'big-file-1', ..., 'big-file-n', :loader => :lab_js %>。如果您在本地没有 LABjs 的副本,或者如果您正在生产中,则 LABjs 通过 cdnjs 从 Amazon 的服务器加载。

    通过使用 Google 或 Amazon 等 CDN,您的用户可以并行加载更多资产(因为有更多主机名),享受更快的速度,有时甚至根本不需要下载资产(例如,如果他们已经加载了 Google 的通过别人的网站复制 jQuery)。

    我在 Heroku 上使用 AssetHat,将我的部署脚本设置为简单地运行 rake asset_hat:minify(以缩小和连接 CSS/JS),将这些更改提交到我的存储库,然后进行实际部署。

    如果您还没有看过这些,您可能会对以下内容感兴趣:

    如果您在设置方面需要帮助或有任何其他问题,请随时在 GitHub (rondevera) 或 Twitter (@ronalddevera) 上给我发消息。

    【讨论】:

      【解决方案2】:

      据我所知,Jammit 无法在 Heroku 上开箱即用。一种选择似乎是使用 Heroku Jammit 插件来管理您的资产 - https://github.com/chebyte/heroku-jammit

      或者,可以将 Jammit 配置为输出到 /tmp:http://geekninja.blogspot.com/2011/04/making-jammit-jam-with-heroku.html

      Rails 3.1 将包含 Sprocket 来处理资产打包,我认为这值得考虑。

      【讨论】:

        【解决方案3】:

        我目前在 heroku 上使用 jammit,以及 amazon s3,它就像一个魅力:)

        其他工具我不能多说,因为我没用过。

        你最后选择了哪一个?

        费尔南多。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-23
          • 2011-08-04
          • 1970-01-01
          • 2015-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多