Monday, November 13, 2017

사이트맵 로딩 최적화: 효과적인 사이트맵 로딩 속도 개선 방법

블로거 사이트맵 로딩 속도, JavaScript 최적화로 확 개선한 후기

블로거 템플릿 가이드에 따라 야심차게 사이트맵(Sitemap) 페이지를 설정했지만, 기대와 달리 로딩 속도가 처참했습니다. 페이지를 열 때마다 한참을 기다려야 목록이 나타나는 상황은 사용자 경험에 좋지 않을 뿐더러, 운영하는 입장에서도 답답함을 느끼게 했습니다.

최적화 전 블로거 사이트맵의 매우 느린 로딩 속도를 보여주는 GIF
최적화 이전, 사이트맵 로딩에 한참 시간이 걸리는 모습

느린 사이트맵 로딩, 원인은 비효율적인 JavaScript?

페이지가 로드되는 과정을 보며 "뭔가 잘못돼도 한참 잘못됐다"는 느낌을 받았습니다. 특히 성능에 민감한 저로서는 (자칭 성능덕후! 🤓) 블로그 자체의 로딩 속도도 개선하고 싶은 마당에, 특정 페이지가 이렇게까지 느린 것은 참을 수 없었습니다. 부족한 실력이지만, 문제의 원인이 사이트맵을 생성하는 자바스크립트(JavaScript) 코드의 비효율성에 있을 것이라 추측하고 최적화 방법을 찾아보기 시작했습니다. 주로 "javascript performance optimization", "자바스크립트 성능 향상" 등의 키워드로 검색했죠.

JavaScript 성능 개선을 위한 두 가지 핵심 전략

여러 정보를 탐색한 결과, 다음과 같은 두 가지 주요 최적화 기법을 사이트맵 생성 스크립트에 적용해 보기로 했습니다.

  1. for 루프 내 length 속성 반복 접근 피하기:

    반복문(for)을 실행할 때마다 array.length와 같이 배열이나 컬렉션의 길이를 계속해서 다시 계산하는 것은 불필요한 연산을 유발합니다. 특히 DOM 컬렉션의 경우 이 비용이 더 클 수 있습니다. 이를 루프 시작 전에 변수에 한 번만 할당하여 사용하면 성능을 개선할 수 있습니다.

  2. 객체 속성 접근 최소화 (Deep Object Lookup 줄이기):

    aaa.bbb.ccc.name과 같이 객체의 깊은 단계에 있는 속성에 반복적으로 접근하는 것 또한 성능 저하의 원인이 될 수 있습니다. 자주 사용하는 중간 객체(예: aaa.bbb.ccc)를 변수에 미리 할당해두고, 이 변수를 통해 하위 속성에 접근하면 탐색 비용을 줄일 수 있습니다.

적용된 JavaScript 최적화 코드 예시

이해를 돕기 위해 제가 적용한 코드 변경 방식을 간략하게 표현하면 다음과 같습니다.

// 최적화 전 (Before Optimization)
for(var i = 0; i < aaa.bbb.ccc.length; i++){
  name = aaa.bbb.ccc[i].name; // 매번 깊은 탐색 및 length 재계산
  // ... 기타 작업 ...
}

// 최적화 후 (After Optimization)
var listItems = aaa.bbb.ccc; // 자주 사용하는 객체를 변수에 할당
var listLength = listItems.length; // length 값을 미리 변수에 캐싱

for(var i = 0; i < listLength; i++){
  name = listItems[i].name; // 캐싱된 변수 사용
  // ... 기타 작업 ...
}

위 예시처럼, 반복문 외부에서 length를 계산하고, 자주 접근하는 객체 경로를 단축시켜 불필요한 연산을 줄였습니다.

결과: 놀랍도록 빨라진 사이트맵 로딩 속도!

이러한 자바스크립트 최적화 작업을 적용한 결과는 정말 만족스러웠습니다! 😻 이전에는 한참을 기다려야 했던 사이트맵 목록이 훨씬 빠르게 표시되는 것을 확인할 수 있었습니다. (아래 GIF는 최적화 후의 모습을 나타내며, 이전 GIF와 비교했을 때 로딩 완료까지의 시간이 단축되었음을 보여줍니다 - 실제로는 다른 GIF를 사용해야 이 차이가 명확합니다.)

자바스크립트 최적화 후 블로거 사이트맵의 현저히 빨라진 로딩 속도를 보여주는 GIF
최적화 이후, 눈에 띄게 빨라진 사이트맵 로딩 (실제로는 개선된 GIF 필요)

아쉬움과 깨달음: 성능 최적화의 매력

물론, 페이지에 접속하자마자 모든 콘텐츠가 즉시 로딩되는 '꿈의 속도'까지는 도달하지 못했습니다. 아마도 사이트맵 데이터를 가져오는 AJAX 통신의 본질적인 시간 소요나, 제 실력의 한계일 수도 있겠습니다. 😂 그래도 목표했던 '페이지 진입 시 바로 목록이 보이는' 수준에 근접하게 개선되어 매우 기쁩니다.

이번 경험을 통해, 비교적 간단한 코드 튜닝만으로도 웹사이트의 체감 성능이 크게 향상될 수 있다는 것을 다시 한번 느꼈습니다. 이런 작은 변화가 큰 차이를 만들어낼 때, 웹 성능 최적화의 진정한 매력에 빠져드는 것 같습니다. ㅎㅎ

혹시 여러분도 블로그나 웹사이트의 로딩 속도 문제로 고민하고 계신다면, 오늘 소개해드린 간단한 자바스크립트 최적화 팁을 적용해 보시는 것은 어떨까요? 더 좋은 최적화 방법이나 경험이 있다면 댓글로 공유해주세요!


0 개의 댓글:

Post a Comment