웹 사이트 로딩을 빠르게, img 태그 대체하기

웹 사이트 최적화

우리들은 웹 사이트를 만들면서 페이지의 로딩 속도 최적화에 심혈을 기울인다. 여러 가지 파일이 많을수록 로딩 속도는 느려지고 복잡해질수록 페이지 자체가 무거워진다. 이 때 img 태그를 대체해서 로딩 속도를 빠르게 해보는 여러 방법에 대해 알아보자

1. Lazy loading

img 태그를 대체하는 것은 아니지만, img 태그에 속성을 추가해주는 방법이다

1
<img src="img source" loading="lazy" />

loading="lazy" 속성을 주면 이미지를 즉시 로드하지 않고, 유저가 이미지를 실제로 볼 때 로딩을 한다.

모든 이미지를 한꺼번에 로드하는 대신 각 이미지를 하나씩 가져오는 방식

이 방법을 사용할 때에는 이미지 크기를 최적화해줘야한다.

2. srcset

장치마다 로드할 이미지를 다르게 정의할 수 있는 방법이다.

화면의 크기에 따라, 해상도의 크기에 따라 이미지의 크기를 다르게 정의해주어서 화면에 따른 최적화를 해줄 수 있다.

1
2
3
4
5
<img
    srcset="img-small.jpg 500w,
    img-medium.jpg 1000w,
    img-large.jpg 2000w"
    src="img-small.jpg" />

이런 식으로 코드를 짜주면, 너비500에 small, 너비1000에 medium, 너비2000에 large, 그리고 srcset을 지원하지 않는 브라우저에는 img-small.jpg를 적용한다

브라우저가 srcset 태그가 있는 경우 스스로 판단해 어울리는 이미지를 불러온다.

3. sizes

이미지가 다양한 화면 크기에 표시되는 방식에 대한 추가 정보를 브라우저에 제공할 수 있다.

1
2
3
4
<img
    sizes="(max-width: 500px) 400px,
    (max-width: 1000px) 800px,
    1200px />

viewport 가 0~500px 일 때 이미지는 400px로 viewport가 501~1000px 일 때 이미지는 800px로 그 이상일 경우 1200px 를 반환한다.

4. picture

1
2
3
4
5
<picture>
    <source srcset="/img-vertical.jpg" media="(orientation: portrait)">
    <source srcset="/img-horizontal.jpg" media="(orientation: landscape)">
    <img src="/img-default.jpg">
</picture>

이런 식으로 source와 img 를 자식 태그로 사용해 줄 수 있으며,

위의 코드는 orientation(방향)이 세로일 때 img-vertical.jpg를, orientation이 가로일 때 img-horizontal.jpg를, 그 외의 경우에는 img-default.jpg를 반환한다.

<picture> 태그를 사용하면 사용하는 조건에 맞는(다크 모드, 화면 최소 너비 등) 이미지를 표시해줄 수 있다.

5. 다른 확장자의 이미지 사용하기

기본적으로 이미지를 표시할 때에는 jpeg 파일을 사용한다. 그러나 이 jpeg파일 대신 다른 대체 확장자를 찾아서 파일의 크기를 줄인다면, 그 자체만으로 홈 페이지 최적화를 할 수 있다.

예를 들어 Jpeg XL, WebP, avif 등의 확장자가 있다.

댓글남기기