Ruby on rails 使用Rails 3进行资产管理(在Heroku上)(Jammit、AssetHat、Rack PageSpeed)

Ruby on rails 使用Rails 3进行资产管理(在Heroku上)(Jammit、AssetHat、Rack PageSpeed),ruby-on-rails,heroku,asset-management,Ruby On Rails,Heroku,Asset Management,我对Rails3.0.x(尤其是Heroku)中用于管理资产的不同工具的优缺点感兴趣 关于这个主题已经有一些问题,但同时也有一些新的工具可用 我对这些工具特别感兴趣: Jammit似乎可以做任何可以做的事情,而且时间更长。那么,这在哪里合适呢 Rack PageSpeed似乎可以通过直接处理服务器响应来快速完成所有工作。这样做是否会导致性能问题?你会推荐它胜过其他两种解决方案吗?嘿,我是这本书的作者。缩小和连接是最容易实现的性能提升;这些特性是Jammit、AssetHat和rack

我对Rails3.0.x(尤其是Heroku)中用于管理资产的不同工具的优缺点感兴趣

关于这个主题已经有一些问题,但同时也有一些新的工具可用

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

Jammit似乎可以做任何可以做的事情,而且时间更长。那么,这在哪里合适呢


Rack PageSpeed似乎可以通过直接处理服务器响应来快速完成所有工作。这样做是否会导致性能问题?你会推荐它胜过其他两种解决方案吗?

嘿,我是这本书的作者。缩小和连接是最容易实现的性能提升;这些特性是Jammit、AssetHat和rack pagespeed的共同特性。Rails支持连接已经有很长一段时间了(虽然它是在运行时完成的,而不是在部署期间),Rails 3.1在部署期间同时支持缩小和连接也就不足为奇了

其余的特性使每个资产管理器都很有趣。例如,如果希望将图像和字体文件直接嵌入样式表中,Jammit非常有用。如果您想将所有优化保持在一个完全独立的层中,rack pagespeed也很方便

将资产内联到CSS中对于样式表很少更改的静态页面非常有用。然而,如果你的网站正在进行积极的开发,样式表甚至有一点变化,用户的浏览器必须重新下载整个内容,包括可能没有变化的内联图像和字体。这取决于项目的性质

如果您的资产太大,无法内联或连接,请选择有助于优化CDN和并行加载的资产:

  • 它充分利用了CDN,无论是(使用亚马逊的服务器)还是您选择的其他CDN。例如,只需将
    添加到布局中(以及配置文件中的版本号),即可从Google的CDN加载jQuery。如果您处于开发模式,并且有一个jQuery的本地副本,那么将加载轻松的脱机开发
  • Asset可以重写样式表的图像URL以使用您的CDN。这从
    config.action\u controller.asset\u host
    设置中读取,并在部署时完成。您的原始CSS保持不变
  • 如果要加载多个JS文件,有时并行加载比串联(即强制串行加载)更快。您可以轻松地打开模式:
    :lab_js%>
    。如果您在本地没有LABjs的副本,或者您正在生产中,LABjs将通过cdnjs从Amazon的服务器加载
通过使用像Google或Amazon这样的CDN,您的用户可以并行加载更多的资产(因为有更多的主机名),享受更快的速度,有时甚至根本不需要下载资产(例如,如果他们已经通过其他人的网站加载了Google的jQuery副本)

我在Heroku上使用了AssetThat,将部署脚本设置为只运行
rake asset\u hat:minify
(缩小并连接CSS/JS),将这些更改提交到我的存储库,然后进行实际部署

如果您尚未看到这些,您可能会对以下内容感兴趣:


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

据我所知,Jammit在Heroku上是无法开箱即用的。一种选择似乎是使用Heroku Jammit插件来管理您的资产

或者,可以将Jammit配置为输出到/tmp:


Rails 3.1将包括处理资产打包的链轮,我认为这是值得考虑的。

我目前正在heroku上使用jammit,与amazon s3一起使用,它的工作方式很有魅力:)

我不能对其他工具说太多,因为我没有使用它们

你最后选了哪一个

费尔南多