어떤 경우에이 명령을 실행해야 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
삭제하여 depency를 추가 할 때마다 명령을 실행하지 않아도됩니다 .var/di
var/generation
내 자신의 테스트에서 Magento는 var/generation
폴더 를 다시 만들지 만 다시 실행될 var/di
때까지 폴더는 만들지 않습니다 setup:di:compile
. 즉, var/generation
삭제할 폴더 만 있어야합니다 .
충분히 재미있게, 이것은 또한 작동 pub/static/*
하고 setup:static-content:deploy
. 이는 Magento가 CLI가 아닌 페이지 다시로드로 정적 컨텐츠를 빌드하는 경우 필요한 파일에 대한 심볼릭 링크를 작성하는 것으로 보이기 때문입니다.
Docker for Mac을 사용하는 동안 사무실 사람들은 위의 명령을 실행하는 데 문제가있었습니다. 파일 처리 속도가 너무 느 렸습니다. 위의 단계를 사용하면 개발이 훨씬 빨라집니다.
프로덕션 또는 기본 모드에서는 작동하지 않습니다. 이것은 개발만을위한 것입니다. Fabian Schmengler가 언급했듯이 초기 페이지 재로드는 평소보다 느리지 만 실행 setup:static-content:deploy
또는`setup : di : compile ' 만큼 느려서는 안됩니다 .
참고로 버전 2.1.5를 실행 중 입니다.
Alan Storm의 블로그 에서 가져 왔습니다 .
의존성 주입 컴파일
시작하려면이 명령으로 해결하려는 문제를 설명해야합니다. Magento 2 시스템을 프로덕션으로 배송 할 때 다음 명령을 실행해야합니다
php bin/magento setup:di:compile
이 명령은 시스템의 코드를 스캔하여 개발자 모드에서 실행할 때 Magento가 동적으로로드하는 많은 것들 (주로 객체 관리자 시스템 및 종속성 주입과 관련됨)을 미리 생성합니다. 이것은 성능과 보안의 문제이며 전체에 대한 논의는이 기사의 범위를 벗어납니다.