ในสิ่งที่กรณีที่เราจำเป็นต้องเรียกใช้คำสั่งนี้magento setup:di:compile?
pub/static
ในสิ่งที่กรณีที่เราจำเป็นต้องเรียกใช้คำสั่งนี้magento setup:di:compile?
pub/static
คำตอบ:
ระหว่างการปรับใช้ (เช่นเมื่อมีการเปลี่ยนแปลงระบบในโหมดการผลิต)
โปรดทราบว่าในโหมดการผลิต (เวอร์ชั่น 2.0.5 และก่อนหน้า) คุณต้องใช้การรวบรวม "ผู้เช่าหลายคน" แก้ไขใน 2.0.6 และใหม่กว่า
bin/magento setup:di:compile-multi-tenant
ดู: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
นอกจากนี้คุณยังสามารถใช้สะสมในโหมดการพัฒนาซึ่งจะเพิ่มความเร็วในเว็บไซต์ แต่ในทางกลับกันมันช้าลงการพัฒนาเพราะคุณจะต้องเรียกใช้bin/magento setup:di:compileทุกครั้งที่คุณเพิ่มชั้นเรียนใหม่ที่มีการอ้างอิง (พารามิเตอร์คอนสตรัค) หรือการเปลี่ยนแปลงการอ้างอิงของชั้นเรียนที่มีอยู่
นี่เป็นทางเลือกและอาจไม่ใช่ความคิดที่ดี หากคุณทำการรวบรวมในสภาพแวดล้อมการพัฒนาของคุณแล้วให้ลบไฟล์var/diเพื่อปิดการใช้งาน
var/generation?
Actionทดสอบ - โหลดหน้าผิดพลาด - ลบdiและgenerationโฟลเดอร์โหลดใหม่ทำงาน - เพิ่มการขึ้นต่อใหม่, หน้าโหลดซ้ำ, ข้อผิดพลาด อย่างไรก็ตามไม่มีการdiสร้างโฟลเดอร์ - ลบgenerationอีกครั้งโหลดทำงาน สรุป: setup:di:compileลบโฟลเดอร์รุ่นหลังเพิ่มการอ้างอิงและคุณจะไม่ต้องทำงาน หากคนอื่นสามารถยืนยันสิ่งนี้ได้นั่นก็ยอดเยี่ยมมาก
ตามความคิดเห็นของฉันในคำตอบอื่น:
คุณสามารถหลีกเลี่ยงการรันsetup:di:compileคำสั่งหลังจากทุกครั้งที่คุณเพิ่มการพึ่งพาโดยเพียงแค่การลบvar/diและvar/generationโฟลเดอร์ก่อนที่จะโหลดหน้าใหม่
จากการทดสอบของฉันเองวีโอไอพีจะสร้างvar/generationโฟลเดอร์ขึ้นใหม่แต่จะไม่สร้างvar/diโฟลเดอร์จนกว่าsetup:di:compileจะรันอีกครั้ง หมายความว่าคุณควรมีvar/generationโฟลเดอร์ที่จะลบเท่านั้น
ขันพอนี้ยังทำงานร่วมกับและpub/static/* setup:static-content:deployนี่เป็นเพราะวีโอไอพีดูเหมือนจะสร้างการเชื่อมโยงไปยังไฟล์ที่จำเป็นหากเนื้อหาแบบคงที่ถูกสร้างขึ้นโดยการโหลดหน้าใหม่แทนที่จะเป็น CLI
ผู้คนในสำนักงานของเรามีปัญหาในการเรียกใช้คำสั่งข้างต้นในขณะที่ใช้ Docker for Mac การประมวลผลไฟล์ช้าเกินไป โดยใช้ขั้นตอนข้างต้นการพัฒนาควรเร็วขึ้นมาก
มันอาจจะดีที่สุดที่จะทราบว่านี้จะไม่ทำงานเมื่ออยู่ในโหมดการผลิตหรือเริ่มต้น นี่เป็นเพียงการพัฒนา ดังกล่าวโดย Fabian Schmengler การโหลดหน้าเริ่มต้นใหม่จะช้ากว่าปกติ แต่ไม่ควรช้าเท่ากับการรันsetup:static-content:deployหรือ `setup: di: compile
สำหรับการอ้างอิงผมใช้เวอร์ชัน2.1.5
การรวบรวมการพึ่งพา
ในการเริ่มต้นเราควรอธิบายถึงปัญหาที่คำสั่งเหล่านี้พยายามแก้ไข เมื่อคุณจัดส่งระบบ Magento 2 เพื่อการผลิตคุณจะต้องเรียกใช้คำสั่งต่อไปนี้
php bin/magento setup:di:compile
คำสั่งนี้สแกนรหัสในระบบของคุณและสร้างจำนวนล่วงหน้า (ส่วนใหญ่เกี่ยวข้องกับระบบจัดการวัตถุและการฉีดพึ่งพา) ที่ Magento จะโหลดแบบไดนามิกเมื่อคุณทำงานในโหมดนักพัฒนาซอฟต์แวร์ นี่เป็นทั้งประสิทธิภาพและความปลอดภัยและการพูดคุยอย่างเต็มที่นั้นเกินขอบเขตของบทความนี้