【问题标题】:Caching signed S3 URI's with paperclip and rails使用回形针和导轨缓存签名的 S3 URI
【发布时间】:2012-03-25 10:34:19
【问题描述】:
我正在 S3 上使用回形针生成过期的签名 URI。但是,在每次请求时,我都会生成一个不理想的新 URI,它会强制浏览器在每次页面刷新时从 S3 下载一组新图像。
我想做的是将生成的 URI 缓存的时间比它们在 S3 上过期的时间短一点。有没有人做过类似的事情,可以提出解决方案。
如果有建议的解决方案(或不建议),我将在 heroku 上进行部署
【问题讨论】:
标签:
ruby-on-rails
heroku
amazon-s3
paperclip
【解决方案1】:
有一种简单的方法可以做到这一点,非常简洁。回形针 expiring_url 方法需要明确的时间。所以我们可以做类似的事情
def s3_expiry
Time.zone.now.beginning_of_day.since 25.hours
end
当我们需要一个过期的 URL 时
user.avatar.expiring_url(s3_expiry, :thumb)
诀窍是图像在一天结束时在 S3 中过期 + 1 小时后生成的任何 URL 直到一天结束。每晚午夜 12:00 都会生成新的 URL。这可以防止图像在站点外使用超过 25 小时,这应该足以防止猖獗的热链接,但仍然足以让浏览器缓存图像一天