티스토리에서 LazyLoading 구현하는 방법

2023. 11. 3. 18:10·개발/티스토리

티스토리와 같은 블로그 플랫폼에서는 이미지를 많이 사용하는 경우가 빈번하기 때문에 레이지 로딩(LazyLoading)을 필수적으로 구현해두는 것이 좋다.

 

이번 글에서란 레이지 로딩이란 무엇이며 이를 사용하는 이유와 더불어 이를 구현하는 코드를 정리해보려고 한다.

레이지 로딩이란?

레이지 로딩이란 사용하지 않는 리소스(예: 이미지)를 식별하여 필요할 때만 로드하는 방식이다. 그렇다면 레이지 로딩을 사용하는 이유는 무엇일까?

 

예를 들어, 블로그 이미지 하단에 있는 이미지는 굳이 처음부터 로딩할 필요가 없다. 레이지 로딩을 사용하는 이유는 누군가는 블로그 하단까지 글을 읽지 않을 수도 있으며, 또 당장 필요한 리소스가 아니기 때문이다.

 

이러한 문제점을 해결하기 위해 레이지 로딩은 중요한 리소스만을 먼저 불러온 다음, 스크롤 및 탐색과 같은 사용자의 요청에 따라 리소스를 불러오는 방식을 사용한다.

레이지 로딩 구현 방법 및 코드

레이지 로딩을 구현하는 방법은 다양할 수 있다. 아래는 이미지의 속성을 파악한다음, src 속성을 data-src로 바꾸어 레이지 로딩을 적용하는 자바스크립트 코드다. 로딩 이미지는 내가 만든 것인데 원하는 경우 다른 것으로도 변경해서 사용할 수 있다.

document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('img').forEach(function (img) {
  // Check if 'data-src' or 'data-srcset' is not already set
  if (!img.getAttribute('data-src') && img.getAttribute('src')) {
    img.setAttribute('data-src', img.getAttribute('src'));
    img.setAttribute('src', 'https://blog.kakaocdn.net/dn/oZRWc/btszCgVFKqQ/ZnzLYkmxQaebat1oZKSpKK/img.webp');
  }
  if (!img.getAttribute('data-srcset') && img.getAttribute('srcset')) {
    img.setAttribute('data-srcset', img.getAttribute('srcset'));
    img.removeAttribute('srcset'); // Remove the original srcset as it's not needed for lazyloading
  }

  img.classList.add('lazyload');
});
});

다음으로 아래의 스크립트 코드를 HTML에 삽입해주면 된다. 이렇게 하면 티스토리 내의 모든 이미지가 해당 이미지로 변경되어 있다가 사용자의 화면에 표시되는 경우 표시되는 레이지 로딩이 구현이 완료된다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/lazysizes.min.js" async></script>

'개발 > 티스토리' 카테고리의 다른 글

티스토리 블로그 자동으로 키워드 링크 매칭하기  (0) 2023.11.06
'개발/티스토리' 카테고리의 다른 글
  • 티스토리 블로그 자동으로 키워드 링크 매칭하기
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
마이리얼트립 프로모션 할인 🏝️
마이리얼트립 호텔 예약 배너
※ 배너를 클릭하여 상품 구매 시, 파트너스 활동에 대한 소정의 수수료를 지급받습니다. 구매자에게 추가로 부과되는 수수료는 없습니다.
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행 N
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남 N
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
티스토리에서 LazyLoading 구현하는 방법
상단으로

티스토리툴바