과거에 한 일은 Amazon S3 및 CloudFront CDN 과 함께 PaperClip을 사용 하여 더 빠른 전송을하는 것입니다. PaperClip은 S3 스토리지를 즉시 지원합니다 . S3 스토리지 구성 옵션에 대한 설명서를 참조하십시오 .
- 이미지 요청을 S3 버킷으로 전달하고 정적 자산에 대한 기타 요청을 Ruby on Rails 애플리케이션으로 전달하도록 CloudFront 배포를 설정하십시오 (또는 S3에 업로드 할 수도 있지만이 질문의 범위를 벗어납니다).
- CloudFront 배포를 가리 키도록 제어하는 도메인 (예 : asset.example.com)을 CNAME 하십시오.
- PaperClip 구성에서을 설정하십시오
s3_host_alias: assets.example.com
. 이로 인해 생성 된 URL 이 저장된 이미지 리소스에 CloudFront 배포 호스트를 사용하게됩니다.
- Ruby on Rails 구성에서을 수행 할 수 있습니다
config.action_controller.asset_host = http://assets.example.com
. 그러면 Ruby on Rails 자산 URL도 캐싱 / 빠른 전달을 위해 CloudFront 배포를 사용합니다.
그것은 꽤 스케치 적이지만, 유용한 자료의 방향을 알려주기를 바랍니다. 물론, 그것은 하나의 솔루션이지만 데이터베이스에서 수십만 개의 이미지 첨부 파일을 처리하는 상황에서 저에게 도움이 된 솔루션입니다.
(필요하거나 귀하의 경우에 유용 할 수 없습니다 가능한 고급 단계로, 당신은 또한 같은, 당신의 CloudFront를 배포에 대해 여러 CNAME이를 설정할 수 있습니다 assets0.example.com
와 assets1.example.com
. 모두 클립을 s3_host_alias
하고 action_controller.asset_host
다음 결정 론적으로 (에 기초 할 수 람다 걸릴 수 있습니다 브라우저는 브라우저가 동일한 호스트에 대한 최대 동시 연결을 제한하기 때문에 동일한 페이지에서 여러 페이지를 다운로드하는 경우 병렬화를 개선하기 위해 다른 호스트를 사용하는 URL을 생성하십시오.)