myDocument/quantec/cs/quantecFirstLoad/README.md

156 lines
8.1 KiB
Markdown
Raw Normal View History

2024-09-11 01:54:54 +00:00
## 빌드시 초기로딩 속도에 대한 고찰 (Frist Load JS)
> 빌드 속도를 개선하고 사용자 사용시 초기 로딩 속도를 향상 시키기 위하여 이 문서를 작성한다.
```console
-- as is --
73requests | 8.5MB transferred | 29MB resources | Finish: 9.42s | DOMContentLoaded: 1.01 s | Load: 2.53s
Route (app) Size First Load JS
┌ λ / 8.33 kB 633 kB
├ λ /analysis/[counselDivisionCode] 14.5 kB 636 kB
├ λ /analysis/not-available 4.31 kB 363 kB
├ λ /assets 11.5 kB 661 kB
├ λ /etc 8.87 kB 602 kB
├ ○ /favicon.ico 0 B 0 B
├ λ /file 2.96 kB 344 kB
├ λ /gateway 3.56 kB 422 kB
├ λ /login 2 kB 425 kB
├ λ /market 3.56 kB 628 kB
├ λ /mts 7.2 kB 375 kB
├ λ /sample 10.5 kB 664 kB
└ λ /sample/backup 142 B 80.1 kB
+ First Load JS shared by all 80 kB
├ chunks/7839-4550171616e94fb7.js 27.3 kB
├ chunks/bce60fc1-c2e93daaf00d5912.js 50.5 kB
├ chunks/main-app-ee2ba3384bf7bca4.js 227 B
└ chunks/webpack-251a6c35d38a66b4.js 1.97 kB
```
위의 빌드 결과를 보았을때 /Assets 쪽에서 Size, FirstLoadJs값이 큰것을 확인 할 수 있음.
위를 개선해보고자 컴포넌트화 및 Dyniamic import 처리를 진행할것임
```console
-- to be --
73requests | 8.4MB transferred | 28.7MB resources | Finish: 8.66s | DOMContentLoaded: 358 ms | Load: 2.05s
Route (app) Size First Load JS
┌ λ / 8.33 kB 633 kB
├ λ /analysis/[counselDivisionCode] 14.5 kB 636 kB
├ λ /analysis/not-available 4.31 kB 363 kB
├ λ /assets 9.03 kB 657 kB
├ λ /etc 8.87 kB 602 kB
├ ○ /favicon.ico 0 B 0 B
├ λ /file 2.96 kB 344 kB
├ λ /gateway 3.56 kB 422 kB
├ λ /login 2 kB 425 kB
├ λ /market 3.56 kB 629 kB
├ λ /mts 7.2 kB 375 kB
├ λ /sample 12 kB 665 kB
└ λ /sample/backup 142 B 80.2 kB
+ First Load JS shared by all 80 kB
├ chunks/7839-4550171616e94fb7.js 27.3 kB
├ chunks/bce60fc1-c2e93daaf00d5912.js 50.5 kB
├ chunks/main-app-ee2ba3384bf7bca4.js 227 B
└ chunks/webpack-8d53428a2b9471a1.js 2.02 kB
```
/assets를 보면 수치상으로도 동적호출로 전환하였을때 용량이 줄어들고 초기로드속도가 빨라지는것을 확인 할 수 있음. 이것에 초기 로딩될때 필요하지 않은것들을 동적호출로 전환한다.
MUI까지 동적 호출을 처리 하였을때
```console
ute (app) Size First Load JS
┌ λ / 10.3 kB 637 kB
├ λ /analysis/[counselDivisionCode] 15.1 kB 640 kB
├ λ /analysis/not-available 4.3 kB 363 kB
├ λ /assets 13.7 kB 446 kB
├ λ /etc 9.96 kB 603 kB
├ ○ /favicon.ico 0 B 0 B
├ λ /file 2.96 kB 344 kB
├ λ /gateway 3.56 kB 423 kB
├ λ /login 2.02 kB 425 kB
├ λ /market 5.64 kB 633 kB
├ λ /mts 9.42 kB 375 kB
├ λ /sample 36.1 kB 667 kB
└ λ /sample/backup 142 B 80.8 kB
+ First Load JS shared by all 80.7 kB
├ chunks/7839-4550171616e94fb7.js 27.3 kB
├ chunks/bce60fc1-c2e93daaf00d5912.js 50.5 kB
├ chunks/main-app-ee2ba3384bf7bca4.js 227 B
└ chunks/webpack-3f67b64ace555e15.js 2.64 kB
```
위와 같이 초기로딩속도는 감소하였지만 파일용량 자체가 커져버리는 이슈가 발생하였다. 이는 이후 컴포넌트베이스로 다시 구조를 짜면 용량이 줄어들것임.
178라인 컴포넌트 동적호출 처리
```console
Route (app) Size First Load JS
┌ λ / 10.3 kB 637 kB
├ λ /analysis/[counselDivisionCode] 15.1 kB 640 kB
├ λ /analysis/not-available 4.3 kB 363 kB
├ λ /assets 13 kB 445 kB
├ λ /etc 9.96 kB 603 kB
├ ○ /favicon.ico 0 B 0 B
├ λ /file 2.96 kB 344 kB
├ λ /gateway 3.56 kB 423 kB
├ λ /login 2.02 kB 425 kB
├ λ /market 5.64 kB 633 kB
├ λ /mts 9.42 kB 375 kB
├ λ /sample 36.1 kB 667 kB
└ λ /sample/backup 142 B 80.8 kB
+ First Load JS shared by all 80.7 kB
├ chunks/7839-4550171616e94fb7.js 27.3 kB
├ chunks/bce60fc1-c2e93daaf00d5912.js 50.5 kB
├ chunks/main-app-ee2ba3384bf7bca4.js 227 B
└ chunks/webpack-2bb5a5c391878cdc.js 2.66 kB
Route (pages) Size First Load JS
┌ ○ /404 185 B 82.8 kB
├ λ /api/airBridge 0 B 82.6 kB
├ λ /api/apiLogs 0 B 82.6 kB
├ λ /api/destroySession 0 B 82.6 kB
├ λ /api/getSessions 0 B 82.6 kB
└ λ /api/setSessions 0 B 82.6 kB
+ First Load JS shared by all 82.6 kB
├ chunks/framework-4498e84bb0ba1830.js 45.1 kB
├ chunks/main-fbfceeefa1e04435.js 34.7 kB
├ chunks/pages/_app-0fe44225c17aa1f2.js 199 B
└ chunks/webpack-2bb5a5c391878cdc.js 2.66 kB
```
theme 호출 된거 삭제 SwipeableViews 컴포넌트의 axis에서만 사용하고 있었음 한국은 그냥 axis="x" 로 하면 됨
```console
Route (app) Size First Load JS
┌ λ / 10.3 kB 637 kB
├ λ /analysis/[counselDivisionCode] 15.1 kB 640 kB
├ λ /analysis/not-available 4.3 kB 363 kB
├ λ /assets 13 kB 445 kB
├ λ /etc 9.96 kB 603 kB
├ ○ /favicon.ico 0 B 0 B
├ λ /file 2.96 kB 344 kB
├ λ /gateway 3.56 kB 423 kB
├ λ /login 2.02 kB 425 kB
├ λ /market 5.64 kB 633 kB
├ λ /mts 9.42 kB 375 kB
├ λ /sample 36.1 kB 667 kB
└ λ /sample/backup 142 B 80.8 kB
+ First Load JS shared by all 80.7 kB
├ chunks/7839-4550171616e94fb7.js 27.3 kB
├ chunks/bce60fc1-c2e93daaf00d5912.js 50.5 kB
├ chunks/main-app-ee2ba3384bf7bca4.js 227 B
└ chunks/webpack-2bb5a5c391878cdc.js 2.66 kB
```