Ruby on rails 如何加快Rails资产管道预编译过程?
有哪些方法可以加快Rails资产管道预编译过程?1。Capistrano部署加速 (1) 使用capistrano内置任务“部署/资产”进行部署。 Capistrano有自己的内置任务“部署/资产”。它将自动为您完成任务 您自己的手工任务之间的区别在于,它只加载Ruby on rails 如何加快Rails资产管道预编译过程?,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,有哪些方法可以加快Rails资产管道预编译过程?1。Capistrano部署加速 (1) 使用capistrano内置任务“部署/资产”进行部署。 Capistrano有自己的内置任务“部署/资产”。它将自动为您完成任务 您自己的手工任务之间的区别在于,它只加载资产组以预编译资产,而不是整个环境 cd/home/apps/APP\u NAME/releases/20120708184757&&bundle exec rake RAILS\u ENV=production RAILS\u GROU
资产
组以预编译资产,而不是整个环境
cd/home/apps/APP\u NAME/releases/20120708184757&&bundle exec rake RAILS\u ENV=production RAILS\u GROUPS=assets资产:预编译
(2) 资产未更改时跳过预编译过程。
如果
- 应用程序/资产
- 图书馆/资产
- 供应商/资产
- Gemfile.lock
- confir/routes.rb
@import“指南针”代码>直接。
这两个都会工作,当你
@导入“指南针”
或@import“指南针/排版/链接/链接颜色”代码>在SCSS中
但是@import“指南针/排版/链接/链接颜色”代码>比导入“指南针”快9倍代码>编译资产时
这是因为当@导入“指南针”代码>,它编译整个compass资产。不仅仅是链接颜色
零件
(2) 避免使用partials
在SCS中,我们喜欢使用partial
来组织我们的资产
但只有当您需要共享变量,或者存在必要的依赖项时,否则
//= require "reset"
//= require "base"
//= require "product"
快于
@import "reset";
@import "base";
@import "product";
3.无理由不需要.scss和.coffee
(1) 避免使用require_树
当我们使用Rails生成器生成控制器时。Rails还将生成这样的资产
- product.css.scss
- product.js.咖啡
并使用以下技术在application.js中装载资产:
//= require_tree
但空资产(无输出)仅包含以下行:
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
编译每个文件大约需要250毫秒。如果您有10个空资产,则为2.5秒
从项目中删除它们,或在application.js中单独装载它们,如下所示:
//= require prodcuts
//= require users
//= require albums
(2) 如果不必要,不要使用css.scss
或js.coffee
。
- 编译的jquery-ui-1.8.16.custom.css(0ms)(pid 19108)
- 编译jquery.ui.1.8.16.ie.css(0ms)(pid 19108)
- 编译jquery.js(5ms)(pid 19108)
- 编译jquery_ujs.js(0ms)(pid 19108)
- 编译的custom.css(14ms)(pid 19108)
custom.css
是custom.css.scss
编译纯CSS和纯JS的速度很快(几乎需要0毫秒)。但是编译.scss和.coffee仍然需要一些时间
总结
替换deploy.rb资产任务
检查日志/production.log
- 寻找慢资产
- 删除@import“compass”;使用替代解决方案
- 使用require代替@import;(必要时使用@import)
- 删除“需要”树,单独装载资源
- 删除空的.scss和.coffeescript
- 当资产是纯css时使用.css
(2) 避免使用partials
在SCS中,我们喜欢使用partial来组织我们的资产
在最新的railsconf上引入了Libsas
可能情况会发生变化,用C语言重写,scss部分承诺会更快我刚刚在Rails内部编写了一个gem来解决这个问题,名为。它只需重新编译更改的文件,只需编译一次即可生成所有资产,从而加快了资产的预编译速度
请注意,我还试图将此修补程序合并到Rails 4.0.0,可能还有Rails 3.2.9(请参阅)。但就目前而言,如果你能帮我测试宝石,如果你有任何问题,请告诉我,那就太棒了。是的,这太疯狂了。Octocore,3.7GHz,需要30米!卡迪托是最糟糕的@nathan.f77是否已并入铁路4?我在使用它时遇到了一个错误,Errno::ENAMETOOLONG
@brauliobo,Rails 4有一些单独的资产改进,这意味着您不需要再使用这个gem了。