5

アプリのアップグレード中です。現在は 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
4

2 に答える 2

1

Rails は、すべての Sprockets アセット リクエストですべての to_prepare フックを実行しています。また、フックで大量の作業を実行するかなりの数の gem があります。(Rails 自体も間接的な違反者です。アセットのリクエストごとにコードの一部をリロードするからです)

彼らがプリロード フックを最適化するのを待つのではなく (一般的に、または単にアセット リクエストに対して)、https://github.com/wavii/rails-dev-tweaksを見てください。アセット リクエスト中のプリロード フック (コードのリロードを含む) を無効にします。

必要な他のリクエストタイプにも構成可能です

于 2011-09-16T17:03:13.510 に答える
0

私が見た遅さは、主に思考スフィンクス (私の Gemfile にあります) に関連しています。開発中、TS はすべてのページ リクエストで I18n 関連のものを読み込みます。すべてのアセットはページ リクエストと見なされます。

https://github.com/freelancing-god/thinking-sphinx/blob/v2.0.7/lib/thinking_sphinx/railtie.rb#L29

とにかく、TS のメンテナは認識しており、そのファイルはマスターに存在しなくなりました。新しいリリースが作成されるまでは、これら 2 つの I18n 行をローカルでコメントアウトするだけでかまいません。

于 2011-09-01T19:24:41.720 に答える