2014-02-25 32 views
2

我在Heroku上有一個應用程序,我使用Amazon S3存儲圖像。我已經使用了我所知道的所有Cache技術,但似乎圖像加載速度太慢,並且推遲了一些用戶。遠程或直接爲亞馬遜S3提供圖像 - 蜻蜓寶石

目前用戶獲得

/media/W1siZiIsIjIwMTQvMDIvMjEvMjMvMjAvMDQvNTY1L01pa2VfOTIzMi5qcGciXV0/Mike_150.jpg?sha=d8993be2 

根據instructions一個必須使用

Dragonfly.app.remote_url_for(uid) 

,他們將得到

http://my-bucket.s3.amazonaws.com/2011/04/01/03/03/05/243/file.jpg 

然而,當我加入這行,什麼都不會發生。

#require 'dragonfly/s3_data_store' 
require 'dragonfly' 

# Configure 
Dragonfly.app.configure do 
    plugin :imagemagick 

    protect_from_dos_attacks true 
    secret "2558d89a83f18f6da793e3b6dccc888c17642563e9ddedf456356f4c2d79" 

    url_format '/media/:job/:name' 


    response_header 'Cache-Control', 'public, max-age=3600'     # You can set custom response headers 
    response_header 'Cache-Control' do |job, request, headers| # either directly or with a block 
    job.image? ? "public, max-age=10000000" : "private"   # setting to nil removes the header 
    end 


    allow_legacy_urls true 


    if Rails.env.test? || Rails.env.development? 
    datastore :file, 
       root_path: Rails.root.join('public/system/dragonfly', Rails.env), 
       server_root: Rails.root.join('public') 
    else 
    datastore :s3, 
       bucket_name: ENV['S3_BUCKET_NAME'], 
       access_key_id: ENV['S3_KEY'], 
       secret_access_key: ENV['S3_SECRET'], 
       url_scheme: 'http', 
       url_host: 'mybucket.s3.amazonaws.com' 

    end 

end 


# Logger 
Dragonfly.logger = Rails.logger 

Dragonfly.app.remote_url_for(uid) 

# Mount as middleware 
Rails.application.middleware.use Dragonfly::Middleware 

# Add model functionality 
if defined?(ActiveRecord::Base) 
    ActiveRecord::Base.extend Dragonfly::Model 
    ActiveRecord::Base.extend Dragonfly::Model::Validations 
end 
  • 我到底做錯了什麼?
  • 服務文件遠程URL是否改變應用性能?
+0

還引用是你能解決這個問題? –

+0

可悲的是我一直無法解決它。但我添加了一個驗證,要求用戶添加更小的圖像大小。在另一個應用程序中,我決定從蜻蜓寶石移開並使用載波寶石。我必須說這是一個更好的選擇。寶石'carrierwave' 寶石'cloudinary' – Benjamin

回答

0

您正在直接從S3提供圖片。根據用戶在世界上的哪個位置與S3存儲區域的不同,延遲和速度可能會有所不同。

加速實施的一個選項是使用AWS Cloudfront CDN並將S3存儲桶作爲原始服務器。

  1. 閱讀Cloudfront and S3
  2. Dargonfly