웹 최적화를 할 때, 이미지 최적화를 많이 한다. 이미지는 웹 페이지에서 가장 큰 파일 크기를 가지는 요소 중 하나로, 큰 이미지를 사용하면 웹 페이지의 로딩 속도가 느려지고 사용자 경험이 저하된다. 느린 로딩 속도는 결국 사용자의 이탈을 발생시킨다!!
오늘은 간단한 이미지 최적화 중에서 이미지 사이즈 관련해서 포스팅을 해보고자 한다.
rendered size는 작은데, intrinsic size가 많이 크기 때문에 비효율 적으로 이미지를 로드하고 있음을 알 수 있다.
그렇기 때문에 <img>
태그에 width와 height를 미리 지정해주게 되면 불필요한 로드를 줄여 성능을 개선시킬 수 있다.
그것은 바로 srcset & sizes 속성을 사용하면 된다!
HTML의 img 요소에 srcset & sizes 속성을 사용하여 다양한 화면 크기에 대응하는 이미지 파일을 지정할 수 있다. 각 이미지 파일은 해당 화면 크기에 가장 적합한 이미지를 제공하도록 선택된다.
srcset="이미지소스 픽셀너비디스크립터(w) 밀도디스크립터(x)"
밀도 디스크립터
x-large.jpg 3x
너비디스크립터
medium.jpg 1000w
sizes="(미디어 조건) 이미지 크기": 미디어 조건을 만족하는 경우 이미지 크기를 지정한다.
<img src="small.jpg"
srcSet="medium.jpg 1000w,
large.jpg 2000w
x-large.jpg 3x"
sizes="(max-width: 600px) 480px,
800px"
alt="이미지">
위 코드를 보자면,
src 속성: src="small.jpg"는 small.jpg라는 이미지 파일을 기본 이미지로 지정한다.
srcset 속성
sizes 속성
우선 이미지 CDN이 뭔지 알아보자
URL 매개변수를 통해 이미지의 너비, 높이, 자르기(crop) 등을 조정하여 사용자에게 적합한 크기의 이미지를 만들 수 있다. 이를 통해 필요 이상으로 큰 이미지를 로드하는 낭비를 없애고, 사용자의 화면 크기에 최적화된 이미지를 보여줄 수 있다.
무료이미지를 제공해주는 unsplash에서 이미지 주소를 보면 아래와 같다.
https://images.unsplash.com/photo-1542435503-956c469947f6
여기에 리사이징을 위한 추가 스트링을 코드에서 작성해주면, 거기에 맞게 사이즈 및 형태가 변환되어서 불러와 진다.
`?w=${width}&h=${height}&q=${quality}&fm=${format}&fit=crop`;
렌더링되는 이미지 사이즈를 고려하여, 불필요하게 큰 사이즈나 용량의 이미지의 로드를 막는 것이 중요하다!