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 的部分的时间差异: image_tag(asset.media.url(:thumb).to_s) = 9.4 秒平均 image_tag(asset.media.thumb.url.to_s) = 40ms平均

慢了 23 倍!

如果我只是调用asset.media.url.to_s 时间会恢复正常,但添加缩略图大小选项似乎会导致很大的性能问题。

于 2013-09-16T00:25:24.877 回答