如何加快 Rails 3+ 中的资产预编译?
Posted
技术标签:
【中文标题】如何加快 Rails 3+ 中的资产预编译?【英文标题】:How do I speed up asset precompiling in Rails 3+? 【发布时间】:2012-02-08 23:32:41 【问题描述】:每次在对 JS 或 CSS 文件进行更改后将代码拉入我的存储库时,我都会运行以下命令:
rake assets:clean
rake assets:precompile
我有很多资产,所以这个过程总是至少需要一分钟。有什么办法让它跑得更快吗?例如,如果我只更改了 CSS,有没有办法告诉它只关注 CSS 文件而不是清理和预编译 JS?
编辑:糟糕,我应该指定这是在生产中。我知道我不需要在开发时预编译资产:)
【问题讨论】:
【参考方案1】:我假设您正在运行 Rails >3.1。
根本不要运行 rake 任务。 Rails 开发模式不需要预编译资产。当有变化时,Rails 会自动编译资产,否则不会。
如果您在为开发中的资产提供服务时正在寻找性能,您可以查看诸如 https://github.com/wavii/rails-dev-tweaks 之类的宝石
【讨论】:
刚刚编辑了我的问题以指定我正在尝试加快 production 的资产预编译。不过,感谢您提供的链接,看起来这在开发环境中编码时会有所帮助。 在部署或处理第一个请求时何时编译资产?无论哪种情况,它都会很慢。大部分为编译速度慢而烦恼的人,一般都是在开发机上编译资源,然后将编译好的资源推送到生产服务器作为捷径。 我在部署后立即编译。我假设如果我在本地编译,它会和服务器上的广告编译一样慢? 通常在开发机器上并不慢。我不确定确切的原因。您可以尝试使用“bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile”,看看它是否更快或相同。如果这种方法更快,您还可以查看 'github.com/dnagir/guard-rails-assets' gem 以自动编译生产资产【参考方案2】:这是一个不假装是答案的插件。
Windows 中的进程监视器显示 ruby.exe 在执行 assets:precompile 时会产生循环,并且在每个循环中它会一次又一次地查询所有已安装的 gem。
Rails 3.2.1
【讨论】:
以上是关于如何加快 Rails 3+ 中的资产预编译?的主要内容,如果未能解决你的问题,请参考以下文章
加速资产:使用 Rails 3.1/3.2 Capistrano 部署预编译
Rails 3.1 资产预编译 - 包括所有 javascript 文件