您好我正在使用Rails和Heroku以及GoDaddy建立一个自定义域名的网站。
我正在使用Carrierwave with Fog,Amazon S3,并使用我的Heroku域名作为Origin Domain设置了一个cloudfront。目前,该网站加载图像的速度非常慢,这就是我设置云端的原因,但我的carrierwave的配置文件似乎并没有改变云端对等的网址。这是我的carrierwave配置文件。我希望用户能够通过Carrierwave上传图像,然后将这些图像传回我的云端。
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws' # required
config.fog_credentials = {
provider: 'AWS', # required
aws_access_key_id: 'acesskey', # required
aws_secret_access_key: 'secretkey', # required
region: 'us-east-1', # optional, defaults to 'us-east-1'
}
config.fog_directory = 'directory' # required
# config.fog_public = false # optional, defaults to true
config.asset_host = 'randomjunk.cloudfront.net'
config.fog_public = false
config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } # optional, defaults to {}
end
只要config.fog_public为false就可以正常工作但是当我将其更改为config.fog_public = true时,网址现在是正确的但是找不到图像。这与我的配置设置有关,还是我错误地使用Heroku设置了我的cloudfront?
答案 0 :(得分:0)
这取决于最初创建文件时使用的设置。如果它们是使用config.fog_public = false
创建的,则它们将是私有文件,并且将使用特殊的签名URL来访问s3。我认为资产主机仅用于公共文件(因此您所看到的)。如果您使用fog_public = true
上传文件,那么我不认为您会看到未找到的文件。您也可以将其设置为true并重新保存图像以更改该属性(我对此处的细节不太确定,您当然应该能够将它们更改为公开)。