Ruby on rails 3.1 为什么资产管道在Rails 3.1中减慢了localhost

Ruby on rails 3.1 为什么资产管道在Rails 3.1中减慢了localhost,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,我注意到Rails 3.1中的资产管道页面加载速度非常慢。加载每个资源(css/js/image)需要半秒到一秒的时间。这确实开始阻碍发展。我在生产中没有同样的问题 有什么解决办法吗?下面的日志文件显示了如何在0.5-0.3秒内加载每个单独的资产: # load of page itself... ... Completed 200 OK in 1231ms (Views: 933.0ms | ActiveRecord: 15.6ms) Started GET "/assets/bluepr

我注意到Rails 3.1中的资产管道页面加载速度非常慢。加载每个资源(css/js/image)需要半秒到一秒的时间。这确实开始阻碍发展。我在生产中没有同样的问题

有什么解决办法吗?下面的日志文件显示了如何在0.5-0.3秒内加载每个单独的资产:

# load of page itself...
...
Completed 200 OK in 1231ms (Views: 933.0ms | ActiveRecord: 15.6ms)


Started GET "/assets/blueprint/screen.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:00 +0000
Served asset /blueprint/screen.css - 304 Not Modified (0ms)


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:00 +0000
Served asset /application.css - 304 Not Modified (0ms)


Started GET "/assets/blueprint/print.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:00 +0000
Served asset /blueprint/print.css - 304 Not Modified (0ms)


Started GET "/assets/universal/application.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:01 +0000
Served asset /universal/application.js - 304 Not Modified (2ms)


Started GET "/assets/universal/animate-color.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:01 +0000
Served asset /universal/animate-color.js - 304 Not Modified (0ms)


Started GET "/assets/universal/animate-shadow.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:02 +0000
Served asset /universal/animate-shadow.js - 304 Not Modified (0ms)


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:02 +0000
Served asset /jquery_ujs.js - 304 Not Modified (0ms)


Started GET "/assets/universal/jquery.placehold.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:02 +0000
Served asset /universal/jquery.placehold.js - 304 Not Modified (0ms)


Started GET "/assets/universal/autoresize.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:03 +0000
Served asset /universal/autoresize.js - 304 Not Modified (0ms)


Started GET "/assets/universal/utilities.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:03 +0000
Served asset /universal/utilities.js - 304 Not Modified (0ms)


Started GET "/assets/universal/validators.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:03 +0000
Served asset /universal/validators.js - 304 Not Modified (0ms)


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2012-01-15 15:53:04 +0000
Served asset /jquery.js - 304 Not Modified (0ms)


Started GET "/assets/whitelabel/pingpanel/pingpanel.css?body=1" for 127.0.0.1 at 2012-01-15 15:53:04 +0000
Served asset /whitelabel/pingpanel/pingpanel.css - 304 Not Modified (0ms)


Started GET "/assets/logo.png" for 127.0.0.1 at 2012-01-15 15:53:05 +0000
Served asset /logo.png - 304 Not Modified (0ms)


Started GET "/assets/application_bar_background.png" for 127.0.0.1 at 2012-01-15 15:53:05 +0000
Served asset /application_bar_background.png - 304 Not Modified (0ms)


Started GET "/assets/linen-new.jpg" for 127.0.0.1 at 2012-01-15 15:53:06 +0000
Served asset /linen-new.jpg - 304 Not Modified (0ms)
在chrome网络分析仪中可以更清楚地看到减速的影响:


每当加载资源时,它都必须通过Rails环境,Rails将重新加载所有代码。当你有很多资产时,它会导致页面加载变慢


尝试gem,它可以让您更好地控制Rails何时重新加载代码。应该可以解决您的减速问题。

由于链轮不使用自动加载器,rails开发人员的调整可能会对您的速度有所改善。链轮是按传统路线安装的

转到development.rb文件并设置:

config.assets.debug = false
这将改变开发模式,只提供一个文件,而不是多个文件,这将加快速度


如果您需要进行一些源代码调试,将debug=1添加为URL参数将告诉链轮为该请求拆分文件。

rails dev tweaks
做得很好,谢谢。平均页面加载时间从9秒下降到2.6秒。在添加
rails-dev-tweaks
之前,我尝试过这个方法,它产生了巨大的影响。在使用dev调整后,尽管我发现更改资产上的调试设置几乎没有效果——我认为,因为dev调整实际上确保了它们甚至没有被击中。