我对在Rails 3.0.x中(尤其是在Heroku上)管理 Assets 的各种工具的利弊感兴趣。

关于此主题已经存在一些older问题,但是与此同时,还有一些新工具可用。

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

  • Jammit
  • AssetHat
  • Rack PageSpeed

  • Jammit似乎可以完成AssetHat可以做的所有事情,并且已经面世了。那么,AssetHat适合放在哪里?

    机架PageSpeed似乎可以通过直接处理服务器响应来即时执行所有操作。您这样做是否遇到任何性能问题?您是否会推荐其他两种解决方案?

    最佳答案

    嘿,我是AssetHat的作者。缩小和连接是最容易实现的性能提升。这些功能是Jammit,AssetHat和rack-pagespeed共有的。 Rails已经支持串联很长时间了(尽管它是在运行时完成的,而不是在部署过程中完成的),并且Rails 3.1在部署过程中同时支持缩小和串联也就不足为奇了。

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

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

    如果您的 Assets 太大而无法内联或连接,AssetHat可以帮助优化CDN和并行加载:

  • 无论是 Google's CDN cdnjs(使用亚马逊的服务器的)还是您选择的其他CDN,它都充分利用了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,您的用户可以并行加载更多 Assets (因为有更多的主机名),享受更高的速度,有时甚至根本不需要下载 Assets (例如,如果他们已经加载了Google的jQuery副本)通过其他人的网站)。

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

    如果您还没有看到这些,您可能会感兴趣:
  • a longer walkthrough of AssetHat's features
  • the official website
  • the technical readme
  • the extensive docs

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

    关于ruby-on-rails - 使用Rails 3(在Heroku上)进行 Assets 管理(Jammit,AssetHat,Rack PageSpeed),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6154094/

    10-12 02:42