对于使用 S3/Cloudfront 进行图像存储的 (Rails) Web 应用程序,我有以下要求:
- 用户只能在登录后才能看到图像。如果用户将图像 URL 发送给朋友,它将不起作用。
- 如果用户看到了一张图片,它应该被他们的浏览器缓存,这样他们就不必再次下载它。
…</p>
- 需求 1 可以通过 S3 的查询字符串身份验证 (QSA) 解决(例如 30 秒到期)。
- 需求 2 可以使用 HTTP 缓存来解决。
是否可以同时使用它们?
我面临的挑战是 QSA 在过期后有效地更改图像的 URL,即使完美的副本可能驻留在浏览器缓存中。