ฉันเขียนคำแนะนำเล็กน้อยนั้น
คุณไม่ต้องการรวบรวมการผลิตจริง ๆ
เมื่อคุณคอมไพล์แล้วนี่คือสิ่งที่เกิดขึ้น:
ทุกคำขอสำหรับไฟล์ใน / เนื้อหาจะถูกส่งไปยังเฟือง ในการร้องขอครั้งแรกสำหรับสินทรัพย์แต่ละรายการนั้นจะถูกรวบรวมและเก็บไว้ใน Rails ที่ใช้สำหรับแคช (โดยปกติคือระบบไฟล์)
ในการร้องขอครั้งต่อไปเฟืองจะได้รับคำขอและต้องค้นหาชื่อไฟล์ลายนิ้วมือให้ตรวจสอบว่าไฟล์ (ภาพ) หรือไฟล์ (css และ js) ที่ประกอบขึ้นเป็นเนื้อหาไม่ได้ถูกแก้ไขและหากมีเวอร์ชันแคชไว้
นั่นคือทุกอย่างในโฟลเดอร์สินทรัพย์และในโฟลเดอร์ผู้ขาย / สินทรัพย์ที่ใช้โดยปลั๊กอิน
นั่นคือค่าใช้จ่ายจำนวนมากตามความจริงแล้วรหัสไม่ได้รับการปรับให้เหมาะกับความเร็ว
สิ่งนี้จะมีผลกระทบต่อความรวดเร็วในการโอนทรัพย์สินของลูกค้าและจะส่งผลเสียต่อเวลาในการโหลดหน้าเว็บไซต์ของคุณ
เปรียบเทียบกับค่าเริ่มต้น:
สินทรัพย์ที่ precompiled public/assets
และรวบรวมปิดสินทรัพย์จะถูกรวบรวมและพิมพ์ลายนิ้วมือไป Sprockets ส่งคืนตารางการแมปของชื่อไฟล์ธรรมดาไปยังลายนิ้วมือไปยัง Rails และ Rails เขียนสิ่งนี้ลงในระบบไฟล์ ไฟล์รายการ (YML ใน Rails 3 หรือ JSON ที่มีชื่อแบบสุ่มใน Rails 4) ถูกโหลดลงในหน่วยความจำโดย Rails เมื่อเริ่มต้นและแคชเพื่อใช้งานโดยวิธีการช่วยเหลือของสินทรัพย์
สิ่งนี้ทำให้การสร้างเพจด้วยสินทรัพย์ที่มีลายนิ้วมือที่ถูกต้องรวดเร็วและการให้บริการไฟล์เองนั้นเป็นระบบเว็บเซิร์ฟเวอร์จากระบบไฟล์ที่รวดเร็ว ทั้งสองอย่างรวดเร็วกว่าการคอมไพล์สด
เพื่อให้ได้ประโยชน์สูงสุดจากไปป์ไลน์และลายนิ้วมือคุณต้องตั้งค่าส่วนหัวในอนาคตอันไกลบนเว็บเซิร์ฟเวอร์ของคุณและเปิดใช้งานการบีบอัด gzip สำหรับไฟล์ js และ css Sprockets เขียนเนื้อหารุ่น gzipped ซึ่งคุณสามารถตั้งค่าเซิร์ฟเวอร์ของคุณให้ใช้งานได้โดยไม่จำเป็นต้องทำเช่นนั้นสำหรับแต่ละคำขอ
สิ่งนี้ทำให้ทรัพย์สินออกไปยังลูกค้าอย่างรวดเร็วที่สุดเท่าที่จะเป็นไปได้และในขนาดที่เล็กที่สุดเท่าที่จะเป็นไปได้การเร่งการแสดงผลฝั่งไคลเอ็นต์ของหน้าเว็บและลดคำขอ (ด้วยส่วนหัวในอนาคต)
ดังนั้นหากคุณกำลังรวบรวมสดมันคือ:
- ช้ามาก
- ไม่มีการบีบอัด
- จะส่งผลกระทบต่อเวลาแสดงผลของหน้าเว็บ
กับ
- ให้เร็วที่สุด
- การบีบอัด
- ลบการบีบอัดได้ยินจากเซิร์ฟเวอร์ (ไม่บังคับ)
- ลดเวลาในการเรนเดอร์หน้า
แก้ไข: (ตอบคำถามเพื่อติดตามความคิดเห็น)
ไปป์ไลน์สามารถเปลี่ยนเป็นคอมไพล์ก่อนคำขอแรก แต่มีสิ่งกีดขวางบนถนนที่สำคัญที่จะทำเช่นนั้น อย่างแรกคือต้องมีตารางการค้นหาชื่อลายนิ้วมือหรือวิธีช่วยเหลือช้าเกินไป ภายใต้ Senario แบบคอมไพล์ตามความต้องการจะต้องมีวิธีต่อท้ายตารางการค้นหาเนื่องจากเนื้อหาใหม่แต่ละรายการจะถูกรวบรวมหรือร้องขอ
นอกจากนี้บางคนจะต้องจ่ายราคาของการส่งมอบสินทรัพย์ที่ช้าเป็นระยะเวลาที่ไม่รู้จักจนกว่าสินทรัพย์ทั้งหมดจะถูกรวบรวมและในสถานที่
ค่าเริ่มต้นซึ่งราคาการรวบรวมทุกอย่างจะถูกจ่ายแบบออฟไลน์ในครั้งเดียวจะไม่ส่งผลกระทบต่อผู้เข้าชมสาธารณะและทำให้มั่นใจได้ว่าทุกอย่างใช้งานได้ก่อนที่สิ่งต่างๆจะปรากฏจริง
ดีลเลอร์ตัวจัดการคือมันเพิ่มความซับซ้อนให้กับระบบการผลิต
[แก้ไข, มิถุนายน 2558]หากคุณกำลังอ่านสิ่งนี้อยู่เพราะคุณกำลังมองหาวิธีการรวบรวมเวลาที่ช้าในระหว่างการปรับใช้คุณสามารถพิจารณารวบรวมข้อมูลในเครื่องล่วงหน้า ข้อมูลเกี่ยวกับเรื่องนี้อยู่ในคู่มือท่อสินทรัพย์ สิ่งนี้ช่วยให้คุณสามารถคอมไพล์ล่วงหน้าโลคัลเฉพาะเมื่อมีการเปลี่ยนแปลงยอมรับว่าและจากนั้นมีการปรับใช้อย่างรวดเร็วโดยไม่มีสเตจการคอมไพล์ล่วงหน้า