资产有问题 - 本地每个页面加载需要1.5分钟

时间:2011-10-24 12:57:17

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

由于我转移到active_admin,我的本地服务器需要花费1.5分钟来加载每个页面。我肯定做错了什么。

Development.rb

config.assets.compress = true; config.assets.debug = true; config.assets.compile = false; config.assets.digest = false

Production.rb

config.assets.compress = true; config.assets.compile = true; config.assets.digest = true; config.assets.precompile + = ['active_admin.js','active_admin.css']

请注意编译在生产中是正确的,因为活动的管理员不能正常工作。

资产文件夹

- Javascript角

----- active_admin.js

----- application.js从// = require_tree ./myfolder /

加载其文件

----- MyFolder文件

---------- 1.js

---------- 2.js

----------....

- 样式表

----- active_admin.css.scss

----- application.css.scss从* = require_tree ./myfolder /

加载其文件

----- MyFolder文件

---------- 1.css.scss

---------- 2.css.scss

----------....

日志

似乎是因为每个资产文件的加载时间。我只列出第一个和最后一个。两者之间的时差是1.5分钟。

2011-10-24开始获取“/assets/jquery.js?body=1”为127.0.0.1 18:19:41 +0530服务资产/jquery.js - 200 OK (4毫秒)

在2011-10-24 18:21:04 开始获取“/assets/myfolder/vertical_menu.css?body=1”127.0.0.1 +0530服务资产/ myfolder / vertical_menu。 css - 200 OK(2ms)

我做错了什么?

3 个答案:

答案 0 :(得分:2)

development.rb的正确设置为:

config.assets.debug = true; 
config.assets.compile = true;

你应该删除压缩线,因为这是一个非常昂贵的过程时间,可能是它很慢的原因。

我建议查看asset pipeline Rails guide,因为它具有已升级的应用配置文件的正确设置,以及有关部署的一些提示。

如果您不需要对文件进行任何调试,您也可以删除调试;这只会提供一个文件而不是很多文件。

答案 1 :(得分:1)

看看https://github.com/wavii/rails-dev-tweaks

Rails在开发模式下运行每个Sprockets资产请求的所有to_prepare挂钩。这包括自动(重新)加载代码以及各种宝石偷偷摸摸的工作。 (Active Admin是其中一个宝石)

rails-dev-tweaks禁用to_prepare&重新加载任何资产请求(以及其他一些资产请求 - 阅读其自述文件的第一部分)。对于任何体面的项目来说,都要大量加快您的开发环境。它还可以配置为您喜欢的任何其他请求执行此操作

答案 2 :(得分:0)

在你的production.rb中你可以尝试添加

config.assets.compile = false

然后运行

bundle exec rake assets:precompile

这应该在您的公共/资产目录中创建application-somemd5.js和application-someothermd5.css,并且在生产模式下,这些预编译资产将被提供,而不是在每次页面加载时重新编译资产管道。

编辑:

实际上,我认为您可能需要使用这样的rake命令:

bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile

RAILS_GROUPS部分取决于您如何设置Gemfile。如果你有一个类似的部分,你需要它:

group :assets do
  gem 'jquery-rails'
  gem 'sass-rails'
  .... etc
end