2012-03-07 2 views
1

S3에서 클립으로 만료 된 서명 된 URI를 생성 중입니다. 그러나 모든 요청에 ​​대해 이상적인 URI가 아닌 새로운 URI를 생성하고 모든 페이지를 새로 고칠 때 S3에서 이미지 세트를 다운로드하도록 브라우저를 강제합니다.종이 클립과 레일로 서명 된 S3 URI 캐싱

내가하고 싶은 것은 S3에서 만료되는 것보다 조금 짧은 시간 동안 생성 된 URI를 캐시하는 것이다. 아무도 전에 이런 식으로 아무것도하지 않았고 해결책을 제안 할 수 있습니다.

그 해결책을 제시 (여부) 만약 내가 Heroku가에 배포하고있어이

답변

5

아주 깔끔한 인이 작업을 수행하는 쉬운 방법이있다. 클립 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시 자정에 생성됩니다. 이렇게하면 이미지가 사이트에서 25 시간 이상 사용되지 않아 과다한 핫 링크를 방지하기에 충분하지만 브라우저가 하루 동안 이미지를 캐시 할 수있을만큼 충분해야합니다.

관련 문제