我最近将我们的应用程序升级到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
答案 0 :(得分:4)
问题出在carrierwave和调用缩略图URL的方法上。我已经为问题https://github.com/carrierwaveuploader/carrierwave/issues/1218
创建了一张票看起来问题来自用于调用图像缩略图网址的方法。
这些是在我们的登台服务器上加载部分8个缩略图网址的时差: 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,时间会恢复正常,但添加缩略图大小选项似乎会导致很大的性能问题。