【问题标题】:rails carrierwave + fog speed optimisationrails carrierwave + 雾速优化
【发布时间】:2013-11-15 14:25:08
【问题描述】:

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

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

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 不是最好的解决方案?

无论如何,关于如何提高图像加载时间的任何解决方案都会很棒。它似乎比应有的速度慢了很多。

【问题讨论】:

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


    【解决方案1】:

    听起来你想使用CloudFront,亚马逊的与 S3 集成的 CDN(内容分发网络)服务。使用 CDN 将全局复制您存储在 CDN 中的内容(有偿),这应该会缩短您的加载时间。

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

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

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

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

    【讨论】:

    • 嗯,它似乎与public = false 一起工作,但在速度上并没有真正产生显着差异。当我设置public=true 时,图像根本不会加载 - 你认为通过 https 而不是 http 会显着改变速度吗?
    • 我希望 https 会慢一点,因为它会增加请求的握手成本。
    猜你喜欢
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多