在config/initializers/carrierwave.rb文件中添加以下代码:
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: ENV['AWS_REGION'],
endpoint: "https://s3.#{ENV['AWS_REGION']}.amazonaws.com"
}
config.fog_directory = ENV['AWS_BUCKET_NAME']
config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" }
config.storage = :fog
end
end
# This is to remove signatures from URLs
module CarrierWave
module Storage
class Fog
class File
def url
if public_url
# remove query strings with signatures
public_url.split('?').first
else
authenticated_url(1607040000)
end
end
end
end
end
end
在以上代码中,我们覆盖了AWS CarrierWave的默认存储类,并定义了一个名为“File”的类。 在这个类中,我们删除了包含签名的查询字符串,这样就可以加快页面的加载速度。