Geçmişte yaptığım şey, daha hızlı teslimat için Amazon S3 ve CloudFront CDN ile PaperClip kullanmak . PaperClip, S3 depolamayı kutudan çıkar çıkmaz çok güzel bir şekilde destekler: S3 depolama yapılandırma seçenekleri için belgelerine bakın .
- Görüntü isteklerini S3 grubunuza ve diğer statik varlık isteklerini Ruby on Rails uygulamanıza iletmek için bir CloudFront dağıtımı ayarlayın (alternatif olarak, bunları S3'e de yükleyebilirsiniz, ancak bu sorunun kapsamı dışındadır).
- CloudFront dağıtımınıza işaret etmek üzere kontrol ettiğiniz bir alanı (varlıklar.example.com gibi) CNAME .
- PaperClip yapılandırmasında ayarlayın
s3_host_alias: assets.example.com
. Bu, oluşturulan URL'lerin CloudFront dağıtım ana makinenizi kullanması için kaydedilmiş resim kaynaklarına neden olmasına neden olur .
- Ruby on Rails yapılandırmanızda bunu yapabilirsiniz
config.action_controller.asset_host = http://assets.example.com
. Ruby on Rails varlık URL'leri, önbellekleme / daha hızlı teslimat için CloudFront dağıtımınızı da kullanır.
Bu oldukça kabataslak, ama umarım bazı yararlı kaynaklar yönünde sizi yönlendirir. Tabii ki, bu sadece bir çözüm, ama veritabanında yüz binlerce görüntü eki ile uğraştığım bir durumda benim için çalışan bir çözüm.
(Gerekli veya dava için yararlı olmayabilir olası bir ileri adım olarak, aynı zamanda gibi sizin CloudFront dağıtımı için birden CNAME'ler kurabilirsiniz assets0.example.com
ve assets1.example.com
. Hem ataş s3_host_alias
ve action_controller.asset_host
ardından deterministically (dayalı sağlayacak lambdas alabilir varlık), tarayıcılar aynı ana bilgisayara maksimum eşzamanlı bağlantıyı sınırlayacağından, aynı sayfada bir demet indiriyorsanız daha iyi paralelleştirme için farklı ana makineler kullanan URL'ler oluşturun.)