1. 라이트하우스 성능 분석
- 라이트 하우스 성능 분석을 했더니 이미지 관련 최적화를 할 필요성을 느꼈다.
- 이미지의 렌더링된 크기는 377*377 이었는데 실제 고유 크기는 1500px*1500px 이 넘었다.
(이미지 요소를 클릭해서 개발자 도구에서 확인해보면 아래와 같이 나온다)
- 예제 -
렌더링된 크기: 120 × 120 px
렌더링된 가로세로 비율: 1∶1
고유 크기: 1200 × 1200 px
기본 가로세로 비율: 1∶1
파일 크기: 175 kB
현재 소스:
https://images.unsplash.com/photo-1542435503-956c469947f6?w=1200&h=1200&q=80&fm=jpg&fit=crop
- 이 엄청 큰 사진(리소스) 들을 몇십개 불러온다고 생각해보자. 성능에 당연히 문제가 갈것이다.
상품 불러오기 1페이지 이미지 최적화적용 전에 완료시간(리소스의 다운로드 및 로딩이 완료된 시간)은 846ms 였다.
그리고 이미지 확장자도 png, jpeg 였다. 최적화 하기 위해서는 이미지 압축률이 좋은 webp 로 변경해야한다.(압축률이 좋다는 것은 같은 이미지라도 더 적은 용량을 차지한다는 것)
2. 이미지 CDN 사용
- 나는 외부 API 를 통해서 image url 을 받아오기에 image CDN 을 사용하려고 한다.
아래 Cloudinary 이미지 CDN 을 사용했다.
https://console.cloudinary.com/console/c-739be1e3bd202569e932ae86ae213f
이미지 태그에 CDN 링크를 넣어주면 된다.
https://res.cloudinary.com/나의 cloud 이름/image/fetch/c_scale,w_1000/f_auto/이미지 원본사진 링크
<S.ProductImgBox>
<img
src={`https://res.cloudinary.com/dgwitjjjd/image/fetch/c_scale,w_1000/f_auto/q_auto/${productDetailData?.image}
`}
alt="상품 사진"
/>
</S.ProductImgBox>
회원가입을 한 후에
이미지 CDN 사용 후 로딩 완료시간이 591ms 로 846ms -> 591ms 로 줄일 수 있었다.
'프로젝트 이모저모 > HoduMarket 프로젝트' 카테고리의 다른 글
오픈마켓 프로젝트)React-Query 는 어떻게 데이터가 동기화 되는가 (0) | 2023.09.29 |
---|---|
오픈마켓 버그) 장바구니에 상품을 담을 경우 TotalPrice 컴포넌트 업데이트 안됨 (0) | 2023.08.18 |
오픈마켓 프로젝트 버그) 최상단 훅 호출 불가, useQueries로 해결 (0) | 2023.08.11 |
타입스크립트 에러) useParams undefined|string 반환 아직 미해결 (0) | 2023.08.08 |
오픈마켓 버그) 페이지네이션 다음 버튼 클릭하면 화면 렌더링 되지 않음 (0) | 2023.07.25 |