2012-03-07 13 views
1

私はS3上でクリップ付きの期限切れの署名付きURIを生成しています。しかし、すべてのリクエストで私は理想的ではない新しいURIを生成し、ブラウザがすべてのページの更新時にS3から新しい一連のイメージをダウンロードするように強制します。ペーパークリップとレールで署名されたS3 URIをキャッシュする

私がしたいのは、生成されたURIをS3で期限切れにするよりも少し時間だけキャッシュすることです。誰もこれの前にこのような何かをして、解決策を提案することができます。

それが解決策を提案している(またはしない)場合、私はHerokuの上で展開していますが

答えて

5

かなりきちんとしている、これを行うための簡単な方法があります。 paperclip expiring_urlメソッドは明示的に時間がかかります。だから我々は

def s3_expiry 
     Time.zone.now.beginning_of_day.since 25.hours 
    end 

ような何かを行うことができますし、我々が期限切れURLを必要とするとき

user.avatar.expiring_url(s3_expiry, :thumb) 

トリックは、画像が生成されたURLのための日+ 1時間の終わりにS3に有効期限が切れているということです一日の終わりまで新しいURLは毎晩12:00の深​​夜12時に生成されます。これにより、画像がサイト外で25時間以上使用されるのを防ぎます。これは、過度のホットリンクを防止するのに十分なはずですが、ブラウザが画像を1日キャッシュできるようにするには十分です。

関連する問題