新手问题 在 Vagrant 中开发 RoR 项目 如何提交 assets 的编译速度?

ytwman · 2014年01月12日 · 最后由 zgm 回复于 2014年01月13日 · 3028 次阅读

在 Windows 下搭了个 Vagrant 安装了 ubuntu 来写 ROR 项目,但是发现 assets 编译速度太慢的,往往都要 10 秒左右才能刷出页面,该如何解决的呢?

应该不会那么慢的吧,你说的编译是开发环境下面编译对吧?

我怀疑是虚拟机慢,或者有什么地方比如网络设置不对。

#1 楼 @linjunhalida 开发环境额。

#2 楼 @lgn21st 我觉得也是虚拟机慢额,用 mac 感觉还算比较好,在 vagrant 下面 assets 和 render 页面拆分的比较多,每次刷新页面就要重新 render 和 assets compile 都比较慢。 给虚拟机分配了 1G 内存 4 个内核都不管事

config.vm.provider "virtualbox" do |v|
  v.customize ["modifyvm", :id, "--memory", "1024"]
  v.customize ["modifyvm", :id, "--cpus", "4"]
end

网络配置的是桥接模式,只有在开机 dhcp 的时候会慢一些,其他的都还好,就是 ror 项目刷新页面的时候感觉吃力。

config.vm.network :public_network

#3 楼 @ytwman 通过 Log,你应该能看到 Rails 从收到 request 请求到处理请求,到返回 response 总共处理了多少时间,其中多少用在数据库上,多少时间用于 view 的处理,这里你可以判断出到底是虚拟机本身慢,还是 Rails 在虚拟机里面慢。

很大可能是磁盘慢……特别如果类型选择有问题……

后面加上这句试试

v.customize ["modifyvm", :id, "--cpus", "4"]
v.customize ["modifyvm", :id, "--ioapic", "on"]

开启 4 个核心要开启 IO APIC 的

@ytwman 你看下 development.rb 这个文件,如果 config.assets.debug = true,那么改成 config.assets.debug = false,这个改动能够减少大量的 http request

#8 楼 @kayakjiang 确实减少了不少时间,哈哈,之前没考虑到那么多。

#9 楼 @ytwman 治标不治本

#10 楼 @zgm 有何高见,求更高深的科普。:satisfied:

vagrant 还是用来做 staging server 和 CI server 吧,本地 development 干嘛要跑在 vagrant 里面?windows 除了留来打游戏还真想不出有啥用……

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