我对 Rails 3.0.x(尤其是 Heroku)中管理资产的不同工具的优缺点很感兴趣。
关于这个主题已经有一些较老的问题,但同时也有一些新的工具可用。
我对这些工具特别感兴趣:
Jammit 似乎可以做 AssetHat 可以做的所有事情,而且可用时间更长。那么 AssetHat 适合在哪里呢?
Rack PageSpeed 似乎通过直接处理服务器响应来即时完成所有工作。你这样做有没有遇到任何性能问题?您会推荐它而不是其他两种解决方案吗?
我对 Rails 3.0.x(尤其是 Heroku)中管理资产的不同工具的优缺点很感兴趣。
关于这个主题已经有一些较老的问题,但同时也有一些新的工具可用。
我对这些工具特别感兴趣:
Jammit 似乎可以做 AssetHat 可以做的所有事情,而且可用时间更长。那么 AssetHat 适合在哪里呢?
Rack PageSpeed 似乎通过直接处理服务器响应来即时完成所有工作。你这样做有没有遇到任何性能问题?您会推荐它而不是其他两种解决方案吗?
大家好,我是 AssetHat 的作者。缩小和连接是最容易实现的性能提升之一;这些功能对 Jammit、AssetHat 和 rack-pagespeed 是通用的。Rails 已经支持串联很长时间了(尽管它是在运行时完成的,而不是在部署期间完成的),而且 Rails 3.1 在部署期间支持缩小和串联也就不足为奇了。
其余功能使这些资产管理器中的每一个都变得有趣。例如,如果您想将图像和字体文件直接嵌入到样式表中,Jammit 就很有用。如果您想将所有优化保存在一个完全独立的层中,rack-pagespeed 也很方便。
将资产内联到 CSS 中非常适合样式表不经常更改的静态页面。但是,如果您的站点正在积极开发中,并且样式表发生了微小的变化,则用户的浏览器必须重新下载整个内容——包括可能没有更改的内联图像和字体。这取决于您的项目的性质。
如果您的资产太大而无法内联或连接,AssetHat 有助于优化 CDN 和并行加载:
<%= include_js :jquery %>
到您的布局(以及配置文件中的版本号)即可从 Google 的 CDN 加载 jQuery。如果您处于开发模式并且拥有 jQuery 的本地副本,则会加载它——轻松离线开发。config.action_controller.asset_host
,并在部署时完成。您的原始 CSS 保持不变。<%= 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 ) 上给我发消息。
据我所知,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 将包含 Sprockets 来处理资产打包,我认为这值得考虑。
我目前在 heroku 上使用 jammit 以及 amazon s3,它就像一个魅力:)
关于其他工具我不能说太多,因为我没有使用过它们。
最后你选了哪一个?
费尔南多。