0

最近、アプリケーションを Rails 4 にアップグレードしました。画像アセットを含むビューのレンダリング時間をアップグレードすると、読み込みが非常に遅くなります。

10 個のアセットを含むページには最大 8 秒かかる場合があり、heroku の一部のページは、レンダリングに時間がかかりすぎるために単純にタイムアウトします。

Rails 3.2.13 では config.assets.debug がデフォルトで true に設定されているという問題がありましたが、Rails 4 では修正されたと思います。

レンダリング時間がこれほど長くなる原因は何ですか?

以下は、参考用の本番環境ファイルです。その他の詳細が必要な場合は、お知らせください。

Adventistmedia::Application.configure do
  config.cache_classes = true
  config.eager_load = true
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.cache_store = :dalli_store, {compress: true}
  config.serve_static_assets = true # fixes heroku issue
  config.static_cache_control = "public, max-age=30758400"
  config.assets.js_compressor = :uglifier
  config.assets.compile = false
  config.assets.digest = true
  config.assets.cache_store = :dalli_store
  config.assets.debug = false
  config.after_initialize do
    Delayed::Job.scaler = :heroku_cedar
  end
  config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif fontawesome-webfont.ttf fontawesome-webfont.eot FontAwesome.otf fontawesome-webfont.woff)
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  config.log_formatter = ::Logger::Formatter.new
  config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com"
end 
4

1 に答える 1

4

問題は、carrierwave とサムネイル URL を呼び出す方法にありました。問題のチケットを作成しましたhttps://github.com/carrierwaveuploader/carrierwave/issues/1218

問題は、画像のサムネイル URL を呼び出すために使用されるメソッドにあるようです。

これらは、ステージング サーバーで 8 つのサムネイル URL を含むパーシャルをロードするための時間差です。平均

それは23倍遅いです!

単純に asset.media.url.to_s を呼び出すと、時間は通常に戻りますが、サムネイル サイズ オプションを追加すると、大きなパフォーマンスの問題が発生するようです。

于 2013-09-16T00:25:24.877 に答える