-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] 성능 개선할 수 있는 부분을 일부 개선 #659
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
soi-ha
approved these changes
Sep 26, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생 많았어요 웨디ㅜ
미션과 달리 생각보다 성능개선이 어렵네요..
추가적인 성능 개선은 다음주에 더 같이 해봐요!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
issue
구현 목적
구현 사항
✅ 용량 큰 이미지를 assets에서 제거
100KB 크기와 비슷 ~ 그 이상의 이미지들은 s3에 올리고 cloudfront로 호스팅해 접근하도록 했습니다.
그래서 api로 불러오는 이미지들은 전부 제거했어요.
s3안에서는
prod/assets
안에 이미지 파일들이 존재합니다.✅ lazy 로딩 적용
router에서 lazy 를 사용해 필요한 페이지를 필요한 시점에 로드하도록 했습니다.
✅ 로딩을 위한 react-lottie 라이브러리를 대체하는 비슷한 모양의 Lottie 컴포넌트 제작
react-lottie 라이브러리가 약 600kb로 큰 비중을 차지하고 있었어요. 만약 이 라이브러리로 각양각색 움직이는 것들을 만들었다면 두었겠지만 저희 프로젝트에서는 로딩만 존재하고 이후 추가될 것도 600kb를 감수할 정도로 많지 않다고 생각했습니다.
그래서 지금 쓰고있는 로티의 뒷배경을 날리고 GIF를 쪄낼 수 있나 생각해봤는데 불가능할 것 같아서.. 원래의 이쁜 로티를 그대로 사용하지 못했어요.
개선안으로는 지금 사용하고있는 로딩 하나만 loading.io에서
최대한 비슷 && 무료
로 제작할 수 있는 로딩 이미지를 커스텀해 제작했습니다. 그리고 css로 export한 것을 컴포넌트 스타일에 맞게 어느정도 조작하여 구현했습니다.[ ⬇️ 전 ]
371155554-9034e42b-eaf4-41ff-8352-fad6f219f957.mov
[ ⬇️ 후 ]
2024-09-26.10.07.00.mov
✅ 토스 아이콘 이미지 최적화
이미지 크기가 925kb여서 사이즈(30px*30px)와 퀄리티를 줄였습니다.
현재는 작은 크기로만 보이기 때문에 사이즈를 많이 줄였어요!
결과: 925kb -> 6kb
✅ Text컴포넌트의 layout shift
Text컴포넌트에서 발생하는 layout shift는 내용이 없을 경우 공백
\u00A0
을 출력해 방지했습니다.🎾 번들 사이즈 성능 개선 결과
로컬 기준으로 메인 번들 크기가 3.3mb -> 2.1mb로 약 36% 감소했습니다.
[ ⬇️ 전 ]
[ ⬇️ 후 ]
프로덕션 환경에서는 메인 번들 크기가 569kb → 181kb로 약 68% 감소했습니다.
[ ⬇️ 전 ]
[ ⬇️ 후 ]
고려사항
질문
의견 주세욧!~~