我对在Rails 3.0.x中管理资产的不同工具的优缺点感兴趣(特别是在Heroku上)。
关于此主题已经有一些older个问题,但同时还有一些新工具可用。
我对这些工具特别感兴趣:
Jammit似乎可以做AssetHat可以做的所有事情,也可以更长时间使用。那么AssetHat在哪里适合?
Rack PageSpeed似乎通过直接处理服务器响应来动态完成所有工作。这样做会遇到任何性能问题吗?您会推荐其他两种解决方案吗?
答案 0 :(得分:14)
嘿那里,我是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 %>
。如果您在本地没有LABj的副本,或者如果您正在生产中,则LABjs将通过cdnjs从Amazon的服务器加载。通过使用Google或亚马逊等CDN,您的用户可以并行加载更多资源(因为有更多主机名),享受更快的速度,有时甚至根本不需要下载资源(例如,如果他们已经加载了Google的通过别人的网站复制jQuery。
我在Heroku上使用了AssetHat,我将部署脚本设置为只运行rake asset_hat:minify
(缩小和连接CSS / JS),将这些更改提交到我的存储库,然后进行实际部署。
如果您还没有看到这些,您可能会对以下内容感兴趣:
如果您需要帮助进行设置或有任何其他问题,请随时通过GitHub(rondevera)或Twitter(@ronalddevera)向我发送消息。
答案 1 :(得分:1)
或者,可以将Jammit配置为输出到/ tmp:http://geekninja.blogspot.com/2011/04/making-jammit-jam-with-heroku.html
Rails 3.1将包括Sprockets来处理资产包装,我认为值得考虑。
答案 2 :(得分:0)
我目前正在使用heroku上的jammit和amazon s3,它就像一个魅力:)
我不能多说其他工具,因为我没有使用它们。
你最后选了哪一个?
费尔南多。