在哪里设置图像的缓存信息?

viv*_*oit 4 ruby-on-rails heroku amazon-cloudfront

这是关于一个在后面运行并提供来自附加组件的图像的Rails应用程序。HerokuCloudFrontActiveStorageBucketeer

在应用程序本身中缓存配置Rails,并且CloudFront针对cssjs甚至关键的重要请求(例如搜索结果、从 API 获取的第三方信息等)进行正确定位。

我不知道如何缓存来自Bucketeer附加组件的图像。

现在,这些图像似乎Bucketeer每次都来自桶中。它们显示时没有缓存 TTL。

我希望它们在 CloudFront 级别和访问者的浏览器级别上缓存长达一年。

这可能吗?

看来Bucketeer附加组件本身无法让我们控制存储桶和/或服务如何处理缓存。

在哪里可以强制这些文件显示缓存指令?

Ale*_*kov 6

感谢您在这里分享您的发现

此外,我发现S3Service接受上传选项 https://github.com/rails/rails/blob/6-0-stable/activestorage/lib/active_storage/service/s3_service.rb#L12

所以你可以将以下代码添加到你的storage.yml

s3:
  service: S3
  access_key_id: ID
  secret_access_key: KEY
  region: REGION
  bucket: BUCKET
  upload:
    cache_control: 'public, max-age=31536000'
Run Code Online (Sandbox Code Playgroud)

有关可用选项的完整列表,请参阅 AWS SDK