我是否在对资产管道做错了什么?

时间:2011-06-22 09:52:37

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

自从“升级”到Rails 3.1后,我的应用程序在开发模式下真的

(每次请求> 30)

我有很多图像,似乎大部分时间延迟是处理每个图像的每个GET请求的资产管道。

在暂存或生产模式下不要出现此问题,因为资产已缓存等。

有没有我没有被告知的事情,或者我们现在应该如何工作?

4 个答案:

答案 0 :(得分:4)

如果您的应用程序的宝石或部分在每个请求开始时加载代码,或者仅仅引用应用程序的部分,导致大部分内容被加载,请求可能会很慢。对于大多数这些,自动加载器是请求延迟的主要原因。

rails自动重新加载器在每个请求开始时删除任何可自动加载的类/模块/等,并且可能会在每个请求开始时导致严重延迟,因为Rails会重新加载它需要的所有源文件

您可能想尝试使用https://github.com/wavii/rails-dev-tweaks,这可以让您精确控制哪些请求会导致自动重新加载器启动。这实际上不是根本原因的修复(某些事情正在做额外的工作)在每个请求开始时它可能不需要这样做 - 但它肯定会减轻大多数此类问题。

答案 1 :(得分:0)

与此同时:

cp -R app/assets/images public/assets

非常有帮助

请记得将public/assets/*添加到.gitignore

答案 2 :(得分:0)

如果你的应用很慢,那是因为你的应用或你使用的其中一个宝石。我有类似的问题,看起来Mongoid就是这种情况,你可以在这里阅读:

http://martinciu.com/2011/06/rails-3-1-and-slow-asset-pipeline.html

答案 3 :(得分:-1)

您可以使用rake任务:

rake资产:预编译RAILS_ENV =开发RAILS_ASSETS_NONDIGEST = true

正如上面提到的,不要忘记将public / assets / *包含在.gitignore中