composer.json 내 autoload 부분에 기술된 형태에 따라
classmap 방식으로 class들을 로딩할건지 psr-4 방식으로 할건지 나뉜다.
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
classmap : composer.json 에 classmap 에 지정된 폴더 내의 모든 php를 읽어서 /vendor/composer/autoload_classmap.php 에 정적으로 배열을 생성하고 이 파일들을 한번에 오토로딩 한다.
장점 : 클래스들을 미리 로딩하므로 런타임시 psr-4보다 성능이 향상됨
단점 : 클래스를 추가할 때마다 dump-autoload를 해서 클래스맵을 작성 해줘야 하는 번거로움
psr-4 : 정적배열에 .php가 아닌, 네임스페이스와 이를 매칭시킬 폴더경로만 지정하게 되며, 런타임시 동적으로 네임스페이스를 이용하여 클래스들을 찾아서 로딩 시킨다. (클래스맵보다 속도 느림)
장점 : 클래스들을 추가하더라도 별도로 dump-autoload를 하지 않아도 런타임시 네임스페이스를 통해 클래스들을 찾음
단점 : 그때그때 클래스들을 찾아서 로딩시키므로 classmap보다 성능저하
composer.json 에 autoload를 추가한 후 반영하는 방법 (패키지들이 이미 설치된 후) :
composer dump-autoload -o
//또는
composer dump-autoload --optimize
패키지를 최초 설치시 :
composer install -o
composer update --optimize-autoloader
성능최적화 시 production 환경에서는 항상 classmap을 활성화 시켜서 빠르게 클래스들을 로드할수 있게 해주는 것이 좋다.
참고 :
composer classmap 참고 :
반응형
'Laravel' 카테고리의 다른 글
[Laravel] subMonth / addMonth 사용 시 주의사항 (0) | 2021.12.31 |
---|---|
[Laravel] Eloquent로 USE INDEX / FORCE INDEX 사용하기 (0) | 2021.12.21 |
[Laravel] Swagger API 적용 하기 (0) | 2021.11.11 |
[Laravel] db에 더미 데이터 만들기 (0) | 2021.11.10 |
[Laravel] Event 와 Listener, Subscribe (0) | 2021.10.07 |