我目前正在使用带有雾的载波来使用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不是最好的解决方案?
无论如何,任何有关如何提高图像加载时间的解决方案都会很棒。它看起来似乎不应该慢得多。
答案 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
。