rails carrierwave +雾速优化

时间:2013-11-15 14:25:08

标签: ruby-on-rails amazon-web-services amazon-s3 carrierwave fog

我目前正在使用带有雾的载波来使用s3存储桶存储和上传图像,但图像加载速度比它们应该慢得多。这些图像在作为应用程序的一部分存储时几乎立即加载 - 但存储有载波和雾,需要几秒钟。

这是我的s3设置还是载波/雾的问题?我的carrierwave配置如下:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                        # required
    :aws_access_key_id      => '***',                        # required
    :aws_secret_access_key  => '***',                        # required
  }

  config.cache_dir = "#{Rails.root}/tmp/uploads"                  # To let CarrierWave work on heroku

  config.fog_directory  = 'bucketname'                     # required NB: having '.' in the bucket name creates an untrusted certificate
  config.fog_public     = false                                   # optional, defaults to true
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
end

我确实已经为美国配置了s3存储桶,而且我位于澳大利亚,因此可能会出现一些问题 - 但我的heroku应用程序也配置到了美国,当它们出现时,它们会快速加载相同的图像存储为应用程序本身的一部分。也许aws不是最好的解决方案?

无论如何,任何有关如何提高图像加载时间的解决方案都会很棒。它看起来似乎不应该慢得多。

1 个答案:

答案 0 :(得分:1)

听起来您想要使用与{S3集成的亚马逊CDN(内容分发网络)服务CloudFront。使用CDN将全局复制您在CDN中存储的内容(价格),这将改善您的加载时间。

set up a CloudFront account and link it to S3之后,在CarrierWave配置中添加如下所示的行:

config.asset_host = "http://1234567.cloudfront.net"

使用您在CloudFront设置期间获得的URL。

不幸的是,您可能还需要为Carrierwave to be able to use Amazon's CDN设置config.fog_public = true