Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何加快Rails资产管道预编译过程?_Ruby On Rails_Asset Pipeline - Fatal编程技术网

Ruby on rails 如何加快Rails资产管道预编译过程?

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

有哪些方法可以加快Rails资产管道预编译过程?

1。Capistrano部署加速 (1) 使用capistrano内置任务“部署/资产”进行部署。 Capistrano有自己的内置任务“部署/资产”。它将自动为您完成任务

您自己的手工任务之间的区别在于,它只加载
资产
组以预编译资产,而不是整个环境

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
如果发生更改,它将重新编译资产。否则,它将跳过pecompile过程,节省大量时间

2.小心使用@import。 (1) 避免使用
@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了。