Rails 4资产管道缓慢

时间:2014-01-05 11:46:56

标签: ruby-on-rails performance asset-pipeline

我已经在互联网上阅读过几十篇关于此的帖子,但主要是针对Rails 3.

出于某种原因,在开发过程中加载总共34个资产的页面需要35秒。

我做了以下事情:

  1. 在development.rb中设置config.assets.debug = false,但这只会将其缩短为30秒,
  2. 多次重新加载页面,但每次加载都很慢,
  3. 手动预编译资产(虽然这似乎只适用于生产),
  4. 寻找类似rails-dev-boost(https://github.com/thedarkone/rails-dev-boost)之类的内容,但找不到rails 4的任何内容。
  5. 我正在开发使用vagrant(https://github.com/rails/rails-dev-box)的ubuntu盒子。主机是最快的全新MacBook Pro。

    我几乎要完全抛弃资产管道并自己编译资产。每次我需要重新加载页面时,我都不能等待35秒。

    对此有任何帮助表示赞赏。

    Page load details

    development.rb:

    MyProject::Application.configure do
    
      config.cache_classes = false
    
      config.eager_load = false
    
      config.consider_all_requests_local       = true
      config.action_controller.perform_caching = false
    
      config.action_mailer.raise_delivery_errors = false
    
      config.active_support.deprecation = :log
    
      config.active_record.migration_error = :page_load
    
      config.assets.debug = false
    
      config.action_mailer.default_url_options = { :host => 'localhost:3000' }
    end
    

    修改

    我认为问题是VM。我使用自制软件在我的Mac上安装了ruby,并使用确切的配置运行相同的项目,并在1秒内加载。我不确定是什么问题。

2 个答案:

答案 0 :(得分:3)

问题可能在于Vagrant框上的shared_folder,可以使用rsync修复:

  1. 在您的mac上安装rync:brew install rsync
  2. 在您的Vagrant文​​件中,将type: "rsync"添加到您的synced_folder:config.vm.synced_folder "[path to host folder]", "[path to guest folder]", type: "rsync"
  3. 我遇到了20-25秒的页面加载时间,一旦我添加了rsync,我的页面就会在一秒钟内加载。由于shared_folder默认只指向您的代码,因此每次加载页面时,它必须将这些文件加载​​到VM。

答案 1 :(得分:0)

添加gem 'rack-mini-profiler'或更不容易使用的gem 'ruby-prof'有助于找到渲染速度慢的内容

我有大约50个重js | css文件,它在开发环境中呈现得相当快,所以资产管道本身的问题核心不太可能