我正在升级应用程序。目前3.1.rc8。
问题在于,在开发中,在每个请求中,似乎每个资产都通过rails堆栈运行。我们正在谈论,每个图像,js和css文件(并且有很多这些文件)。在第一次请求之后,它们都返回304,但它仍然很慢。
每次请求后都会有很多这样的内容:
Started GET "/assets/jquery-ui-1.8.16.custom.css?body=1" for 127.0.0.1 at 2011-08-30 15:36:21 -0400
Served asset /jquery-ui-1.8.16.custom.css - 304 Not Modified (0ms)
Started GET "/assets/yui.css?body=1" for 127.0.0.1 at 2011-08-30 15:36:21 -0400
Served asset /yui.css - 304 Not Modified (0ms)
如何在开发中使资产像在3.0.x中那样提供服务?
我也在使用这些标签来防止我的css / js被编译成dev中的单个文件:
= stylesheet_link_tag 'application', :debug => Rails.env.development?
= javascript_include_tag 'application', :debug => Rails.env.development?
这是我的application.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
if defined?(Bundler)
Bundler.require(:default, :assets, Rails.env)
end
module Fooapp
class Application < Rails::Application
config.encoding = "utf-8"
config.filter_parameters += [:password, :password_confirmation]
config.assets.enabled = true
config.assets.version = '1.0'
end
end
和development.rb:
Fooapp::Application.configure do
config.cache_classes = false
config.whiny_nils = true
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = true
config.active_support.deprecation = :log
config.action_dispatch.best_standards_support = :builtin
config.assets.compress = false
config.assets.debug = true
end
答案 0 :(得分:1)
Rails正在每个Sprockets资产请求上运行所有to_prepare挂钩 - 并且有很多宝石在其挂钩中执行大量工作。 (Rails自己也是间接攻击者,因为它也会在每个资产请求上重新加载一些代码)
请等待https://github.com/wavii/rails-dev-tweaks,而不是等待他们优化预加载挂钩(通常,或仅用于资产请求)。它在资产请求期间禁用预加载挂钩(包括代码重新加载)。
它也可以配置为您想要的任何其他请求类型
答案 1 :(得分:0)
我看到的缓慢主要与思考sphinx(在我的Gemfile中)有关。在开发过程中,TS会在每个页面请求中加载一些与I18n相关的内容。并且每个资产都被视为页面请求。
https://github.com/freelancing-god/thinking-sphinx/blob/v2.0.7/lib/thinking_sphinx/railtie.rb#L29
无论如何,TS的维护者都知道,并且主文件上不再存在该文件。在新版本发布之前,您可以在本地注释掉这两条I18n行。