मैंने जो कुछ अतीत में किया है वह तेजी से वितरण के लिए Amazon S3 और CloudFront CDN के साथ PaperClip का उपयोग करना है । पेपरक्लिप एस 3 स्टोरेज को बॉक्स से बहुत अच्छी तरह से बाहर निकलने का समर्थन करता है: एस 3 स्टोरेज कॉन्फ़िगरेशन विकल्पों के लिए उनके दस्तावेज देखें ।
- अपने S3 बाल्टी के लिए छवि अनुरोध अग्रेषित करने के लिए CloudFront वितरण सेट करें और रूबी एप्लिकेशन पर अपनी रूबी के लिए स्थिर संपत्ति के लिए अन्य अनुरोध (वैकल्पिक रूप से, आप उन S3 को भी अपलोड कर सकते हैं, लेकिन यह इस प्रश्न के दायरे से बाहर है)।
- अपने CloudFront वितरण को इंगित करने के लिए आपके द्वारा नियंत्रित डोमेन (जैसे कि आस्तियों .example.com) को CNAME करें।
- पेपरक्लिप कॉन्फ़िगरेशन में, सेट करें
s3_host_alias: assets.example.com
। यह आपके CloudFront वितरण होस्ट का उपयोग करने के लिए सहेजे गए छवि संसाधनों के लिए उत्पन्न URL का कारण होगा ।
- रेल विन्यास पर अपनी रूबी में, आप तब कर सकते हैं
config.action_controller.asset_host = http://assets.example.com
। रेलिंग एसेट यूआरएल पर रूबी फिर कैशिंग / तेज वितरण के लिए आपके क्लाउडफ्रंट वितरण का उपयोग करेगी।
यह बहुत ही डरावना है, लेकिन यह आपको कुछ उपयोगी संसाधनों की दिशा में उम्मीद करता है। बेशक, यह सिर्फ एक समाधान है, लेकिन यह एक है जिसने मेरे लिए एक ऐसी स्थिति में काम किया है जहां मैं डेटाबेस में सैकड़ों हजारों छवि संलग्न कर रहा था।
(एक संभव उन्नत कदम है कि आवश्यक या अपने मामले के लिए उपयोगी नहीं हो सकता है के रूप में, आप भी कई CNAME उपलब्ध अपने CloudFront वितरण के लिए, इस तरह के रूप में स्थापित कर सकते हैं assets0.example.com
और assets1.example.com
दोनों पेपरक्लिप। s3_host_alias
और action_controller.asset_host
तो lambdas कि आप निर्धारणात्मक (के आधार पर करने की अनुमति देगा ले जा सकते हैं परिसंपत्ति) अलग-अलग मेजबानों का उपयोग करने वाले URL उत्पन्न करते हैं, बेहतर समानांतरकरण के लिए यदि आप एक ही पृष्ठ पर उनमें से एक गुच्छा डाउनलोड कर रहे हैं, क्योंकि ब्राउज़र एक ही मेजबान के अधिकतम युगपत कनेक्शन को सीमित कर देंगे।)