Rails assets 编译速度太慢

zernel · 2012年06月15日 · 最后由 Zernel 回复于 2012年06月16日 · 6100 次阅读

assets 编译速度太慢,在服务器上编译时差点死机,不知道是不是配置问题,求指导:)

是挺慢的,不过不至于死掉

用什么 js runtime?用 nodejs 看看。

本地编译再传上去 换个更好的服务器 换个更好的 compressor

#JS runtime.                                                                   
gem 'execjs'                                                                    
gem 'therubyracer'

用 nodejs 会快点么?我试下,thx

#2 楼 @cantin 你现在是用哪个 compressor?

#4 楼 @Zernel 我是不会告诉你我现在是不用滴

差点死掉?是不是内存不够啊

#6 楼 @HungYuHei 可能那个项目比较大,你们跑起来有没有觉得很耗资源?

是不是使用 bootstrap 后编译非常慢? 我有一个项目用了 bootstrap-rails 这个 gem,在 production 环境运行 rake assets:precompile 相当慢, 大概要花 8 分钟左右,而且这期间某个 CPU 消耗是 100%,每次部署的时候等得人都快崩溃了。

后来做了一个改动,速度快了很多,运行 rake assets:precompile 只需要 10 多秒的时间了。

修改之前,css 的使用是这样的,application.css 文件内容如下:

/*
*= require app_bootstrap
*= require_tree .
*/

app_bootstrap.css.scss 文件内容如下:

body { padding-top: 60px; }

$baseFontFamily: Verdana, "宋体", Arial, sans-serif !default;
$baseFontSize: 14px !default;
// import original bootstrap
@import "bootstrap";
@import "responsive";

修改处理:把 app_bootstrap.css.scss 的内容直接迁移到 application.css 中,删除 app_bootstrap 引用。 修改之后,application.css 文件内容如下:

/*
*= require_self
*= require bootstrap
*= require responsive
*= require_tree .
*/
body { padding-top: 60px; }

修改之后,运行 rake assets:precompile 就只花 10 多秒了。 原因未来得及深究,我猜大概是 bootstrap 的 sass 替换花了很长时间。 希望对你有帮助。

看 CPU 和内存是不是太低了,的确每次编译都要几分钟,但这东西让一般的服务器死机是几乎不可能的。

#8 楼 @vincent 没有用 bootstrap,不过那个项目里面只有一个 css 文件,不是 scss,不知道有没有这方面的原因。谢谢你的回答。

#9 楼 @kgen 有可能,每次编译都要十多分钟,现在打算看下如果有没有什么方法可以优化,如果没有的话就升级一下服务器的配置。谢谢你的回答。

我每次也是很慢,但不至于死机,死机说明负载过高了。 或许未来可以实现一下根据 Git 文件版本或文件日期来把编译过的文件做个 cache 省下多余的编译耗时

#12 楼 @huacnlee 嗯,本地编译或许能绕过这个问题,谢谢你的回答:)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号