สิ่งที่ฉันทำในอดีตคือใช้ PaperClip กับAmazon S3และCloudFront CDNเพื่อการส่งที่รวดเร็วขึ้น คลิปหนีบกระดาษรองรับการจัดเก็บ S3 อย่างมากออกจากกล่อง: ดูเอกสารของพวกเขาสำหรับการตั้งค่าตัวเลือกการจัดเก็บ S3
- ตั้งค่าการกระจาย CloudFront เพื่อส่งต่อคำขอภาพไปยังที่ฝากข้อมูล S3 ของคุณและคำขออื่น ๆ สำหรับเนื้อหาแบบคงที่ไปยังแอปพลิเคชั่น Ruby on Rails ของคุณ (หรือคุณสามารถอัปโหลดภาพเหล่านั้นไปยัง S3 ได้เช่นกัน
- CNAMEโดเมนที่คุณควบคุม (เช่น assets.example.com) ให้ชี้ไปที่การกระจาย CloudFront ของคุณ
s3_host_alias: assets.example.com
ในการกำหนดค่าคลิปชุด สิ่งนี้จะทำให้URL ที่สร้างขึ้นไปยังทรัพยากรรูปภาพที่บันทึกไว้ใช้โฮสต์การกระจาย CloudFront ของคุณ
- ใน Ruby on Rails
config.action_controller.asset_host = http://assets.example.com
การกำหนดค่าของคุณแล้วคุณสามารถทำ URL สินทรัพย์ Ruby on Rails จะใช้การจัดจำหน่าย CloudFront ของคุณเพื่อการส่งแคช / เร็วขึ้น
นั่นเป็นภาพร่างที่ค่อนข้างสมบูรณ์ แต่หวังว่าจะนำคุณไปสู่แหล่งข้อมูลที่เป็นประโยชน์ แน่นอนว่าเป็นเพียงทางออกเดียว แต่เป็นวิธีที่ได้ผลสำหรับฉันในสถานการณ์ที่ฉันต้องเผชิญกับสิ่งที่แนบมากับภาพนับแสนในฐานข้อมูล
(เป็นขั้นตอนขั้นสูงที่อาจไม่จำเป็นหรือมีประโยชน์สำหรับกรณีของคุณคุณยังสามารถตั้งค่า CNAME หลายรายการสำหรับการจัดจำหน่าย CloudFront ของคุณเช่นassets0.example.com
และassets1.example.com
. คลิปหนีบกระดาษทั้งสองs3_host_alias
และaction_controller.asset_host
จากนั้นสามารถนำลูกแกะที่จะช่วยให้คุณกำหนดค่าได้ asset) สร้าง URL ที่ใช้โฮสต์ที่แตกต่างกันเพื่อการขนานที่ดียิ่งขึ้นหากคุณดาวน์โหลดเครือข่ายเหล่านั้นในหน้าเดียวกันเนื่องจากเบราว์เซอร์จะ จำกัด การเชื่อมต่อสูงสุดพร้อมกันกับโฮสต์เดียวกัน)