webStyling/design

이미지를 화면에 잡힐때만 로딩하고 싶을때. (loading = 'lazy')

부엉이사장 2023. 3. 24. 06:29

이미지 용량이 크다. 그렇다고 정적인 이미지를 없애기도 그렇다.

 

하지만 화면에 잡히지도 않는 이미지가 다운이 된다면?

그만큼 호스팅시 클라이언트에게 전송되는 이미지데이터가 든다는 것이고,

따라서 낭비다.

 

# 예시

    <div id="carouselExampleDark" class="carousel carousel-dark slide">
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img src="이미지 경로1" />
        </div>
        <div class="carousel-item">
          <img src="이미지 경로2" />
        </div>
        <div class="carousel-item">
          <img src="이미지 경로3" />
        </div>
      </div>
    </div>

이 코드는 총 이미지 세개가 carousel형식으로 보여지게 되는 부트스트랩 태그다.

 

처음 carousel에 이미지경로1의 이미지가 보여지게 된다.

그다음 이미지2, 이미지3이 뜬다.

다음버튼은 그냥 보기 편하게 안썼지만 다음 버튼을 누르면 이 이미지들이 버튼을 누를때마다 슬라이드로 보여진다.

 

근데 네트워크탭을통해 확인하면

이 carousel이 화면에 보여지는 순간, 이미지1,2,3이 전부 다운받아진다.

 

이미지 하나의 용량이 100mb라고 할때

화면에는 이미지1만 보이는데 carousel이 켜진순간 이미지 세장, 총 300mb가 다운받아지는것이다.

이는 호스팅비용의 낭비로 이어진다.

 

해결책은?

 

 

# loading = 'lazy' 속성

    <div id="carouselExampleDark" class="carousel carousel-dark slide">
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img src="이미지 경로1" loading = 'lazy'/>
        </div>
        <div class="carousel-item">
          <img src="이미지 경로2" loading = 'lazy'/>
        </div>
        <div class="carousel-item">
          <img src="이미지 경로3" loading = 'lazy'/>
        </div>
      </div>
    </div>

이미지 태그에 저렇게 loading = 'lazy' 속성을 부여하게되면

이미지가 화면에 보여질때만 이미지를 다운받는다.

이건 개발자도구 네트워크탭에서 확인할수 있다.

 

 

 

# 추가

- carousel에서 만약 위 예시 태그로 세장의 이미지를 다 보고 다시 첫이미지를 보러간다면?

이미지 다운이 새로되는게아니라 다운받은이미지를 재사용해서 데이터를 더 받는게 아니다.

 

 

# 단점은?

이미지가 위의 예시처럼 100mb, 매우 크다면

carousel 페이지가 넘어갈때마다 이미지를 다운받는 시간이 필요하다.

처음 세장의 이미지를 전부 다운받고 다음버튼을 누를경우, 부드럽게 동작할테지만

loading = 'lazy'속성을 부여하면 다음버튼을 누를때마다 100mb를 다운받아야하니

carousel이 부자연스럽게 움직일것이다.

'webStyling > design' 카테고리의 다른 글

CSS // animation  (0) 2023.04.04
CSS // transform, transition  (0) 2023.04.04
css우선순위, 미디어쿼리 css적용이 안될때는?  (0) 2023.02.27
dispaly position 복습  (0) 2022.08.21
flex box 재복습  (0) 2022.08.21