2012-04-24 28 views
13

我的应用程序中的每个页面请求都会拉下大约30个资产(JavaScript和图像),这些资产都是供应商/和应用程序/内容中的第三方资源。当然,所有的JavaScript都是在生产环境中进行组合和缩小的,所以在那里很好,但是在开发中,它确实很慢。像加载页面8秒钟,只会变得更糟。这是正常的,可以做些什么来加快速度?正在开发的资产缓慢加载

我尝试将资源中的图像移动到公共/上,但它为它们提供的速度一样慢。每秒约3-4个文件。

这发生在具有WEBrick和Unicorn的快速Macbook Pro上。

+0

你在麒麟开了多少工人? WEBrick可以一次处理一个请求,因此30个资产需要8秒是正常的。如果你用4-5名工人配置独角兽,它的加载速度要快得多 – bcd 2012-05-11 20:22:39

+0

好主意,但我刚刚用2,5和16试过。不幸的是,没有明显的区别。为了清楚起见,我在config/unicorn.rb中设置了“worker_processes 5”,并运行了bundle exec unicorn_rails。 – mahemoff 2012-05-13 18:53:46

+0

确保使用萤火虫或铬合金开发工具进行检查,以确定需要花费的时间 - 它可能是主页,而不是资产。我拥有近20个资产,所需时间不到1/2秒(页面上的数据库工作量很少)。 – Matthew 2012-05-15 01:50:27

回答

25

关闭资产调试应该提高速度有点。

#development.rb 
config.assets.debug = false 
+0

非常感谢你:) – achempion 2014-01-25 07:29:55

+0

这工作奇迹。 – nfriend21 2014-07-04 14:18:48

+0

这样做的缺点是什么? – 2015-01-29 16:27:37

1

我个人使用thin服务器。也放慢了我的开发环境(带我+12秒)。添加它做你的Gemfile:

group :development do 
    gem "thin" 
end 

束与运行:

thin start 

之前预编译的资产我把我的加载时间降低到±5(有一些配置和代码重构)。希望它可以帮助

enter image description here

-source薄网站

+0

感谢分析数据。不幸的是,它的运作速度与独角兽一样快。需要6秒钟才能加载约30个文件,这是在应用程序可运行之前所需要的文件(主要是JS/CSS文件)。 – mahemoff 2012-05-13 20:22:44

0

你可以检查出guard及其相关的插件预编译的资产在后台为你在文件系统中对其进行编辑。

+0

我可能不得不求助于此。我认为,在生产资产管道方面仍然可以正常运作的时间很长。 – mahemoff 2012-05-15 13:22:13

9

最有可能的问题是,Rails会重新加载每个资产请求上的所有类。这个宝石:https://github.com/wavii/rails-dev-tweaks通过调整Rails的自动加载规则解决了这个问题。

+0

哇,这是很多重新加载。不知道发生了什么,我会检查开发调整谢谢。 – mahemoff 2012-05-16 16:08:37

+0

现象!这实际上工作。 – mahemoff 2012-05-16 17:38:54

+1

@mahemoff如果这解决了这个问题,它应该被标记为答案。 – 2012-05-17 11:45:32

0

我相信铁轨必须在开发过程中每次都要编译资产,而对于生产来说,除了第一次导致开发缓慢之外,它没有任何问题。