Skip to content

zenna9/frontend-performance-optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

바닐라 JS 프로젝트 성능 개선

성능 개선 보고서

1. 준비

  • PageSpeed Insights를 사용해 측정
  • desktop 환경으로 가정
  • 파일 변경 후 콘솔에서 캐시 무효화 실행 확인
    • image

2. 개선 과정

image

  1. 프로그레시브 이미지 로딩 기법 적용

    • https://pagespeed.web.dev/analysis/https-d3evlhnos2z3s3-cloudfront-net/t5sykptbyp?form_factor=desktop
    • 이유 :
      • 성능 저하 원인 중 이미지에 관련된 내용이 제일 많아, 이 부분을 우선 수정하기로 함.
      • 특히 배너 이미지가 2,470ms로 가장 큰 저하 요소이기 때문에 우선적으로 적용
    • 개선 방법 :
      • 프로그레시브 기법을 적용할 이미지에 progressive-image 클래스명을 추가하고, 해당 클래스명을 가진 요소는 기법을 적용하도록 수정
    • 개선 후 향상 지표
      • 성능 : 62 → 82 (30% 향상)
  2. jpg to webp (성능 82→93)

    • https://pagespeed.web.dev/analysis/https-d3evlhnos2z3s3-cloudfront-net/p5asdgd0rl?form_factor=desktop
    • 이유 :
      • WebP 및 AVIF와 같은 이미지 형식은 PNG나 JPEG보다 압축률이 높기 때문에 다운로드가 빠르고 데이터 소비량도 적음
      • 2,156KB의 절감을 예상
    • 개선 방법 :
      • 이미지의 webp 변환 방법들 중, 한번에 변경 가능한 CLI방식을 선택
      • cwebp으로 images폴더 내의 jpg를 일괄 변경 for %i in (*.jpg) do cwebp -q 80 "%i" -o "%~ni.webp"
      • index.html에서 ".jpg" → ".webp"로 일괄 변경
    • 개선 후 지표
      • 성능 : 82 → 93
      • TBT : 100 → 150 (성능 저하됨)
      • LCP : 2.6 → 1.3
    • 기타
      • 전체적인 성능은 많이 향상되었지만 TBT가 오렌지 레벨 직전 수치를 보여 우려됨
  3. lazy loading (성능 93→96)

    • https://pagespeed.web.dev/analysis/https-d3evlhnos2z3s3-cloudfront-net/3ffp85f7pg?form_factor=desktop
    • 이유 :
      • First Paint & LCP 최적화
    • 개선 방법 :
      • 외부 API로 불러오는 이미지에 lazy 클래스명을 추가하고, js로 적용했다.
    • 개선 후 지표
      • 성능 : 93 → 96
      • TBT : 150 → 90
      • LCP : 1.3 → 1.1
    • 기타
      • 모바일 환경에서 데이터 사용량 절약 효과가 높은 개선안인데 데스크탑 기준으로 측정해서 유의미한 차이가 느껴지지 않는 걸 수도 있다는 생각을 했다.
  4. 불필요한 dom제거 (성능 +-0 )

    • https://pagespeed.web.dev/analysis/https-d3evlhnos2z3s3-cloudfront-net/71gbutstew?form_factor=desktop
    • 이유 :
      • TBT 점수 향상
    • 개선 방법 :
      • 불필요하게 사용된 span을 제거하라는 권고를 따름
    • 개선 후 향상 지표
      • TBT : 90 → 110
    • 기타
    • TBT점수를 올리기 위해 진행한 내용인데 오히려 성능이 저하되어서 당황했다..
    • 캐시 무효화를 깜박하고 쟀을 땐 유의미한 성능 개선이 있었는데 체크아웃하고 다시 측정했을땐 아니었다.
  5. alt추가, 색상대비 강조 (성능 +-0 )

질문

  1. 매 수정 이후마다 캐시 무효화를 실행했는데 의미가 있는 것인지 궁금합니다. 이론상으로는 실행하고 측정해야 될 것 같았고, 누락하고 측정했을 때 결과가 제대로 반영되지 않는 느낌이 있었습니다.
  2. 이미지 비율 기재는 이해가 되는데, width, height등을 어떻게 적어야 하는지 조금 난해합니다. 대부분 반응형이기 때문에 명확하게 적을 수 없을 것같은데, %로 기재하는 것도 의미가 있을까요?

About

프론트엔드 최적화 및 보고서

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •