데브허브 | DEVHUB | [10분 테코톡] 앵버의 브라우저에서 보이지 않는 최적화[10분 테코톡] 앵버의 브라우저에서 보이지 않는 최적화
- 브라우저 최적화는 개발자가 직접 코드를 수정하는 '수동 최적화'와 브라우저가 내부적으로 동작하는 '자동 최적화'로 나뉘며, 발표는 자동 최적화에 중점을 둡니다. ⚙️
- 브라우저의 자동 최적화를 이해하는 것은 개발자가 최적화를 방해하지 않고 오히려 도울 수 있게 하여 사용자 경험을 향상시키는 데 중요합니다. 🤝
- 네트워크 최적화는 웹 리소스를 사용자에게 더 빨리 전달하여 로딩 속도를 향상시키는 것이 목표이며, 메인 파서와 보조 파서가 병렬적으로 작동하여 리소스 예측 로딩을 수행합니다. 🚀
- 보조 파서는 메인 파서가 스크립트 처리로 멈춰있는 동안 다음 필요한 리소스를 미리 요청하여 유휴 시간을 줄이고 전체 로딩 시간을 단축합니다. ⏳
- 개발자는
preload, fetchPriority, loading="lazy"와 같은 속성을 사용하여 브라우저의 리소스 로딩 최적화에 명시적인 힌트를 줄 수 있습니다. 💡
- 렌더링 최적화는 불필요한 재계산과 다시 그리기를 피하여 화면을 효율적으로 업데이트하고 부드러운 시각적 경험을 제공하는 것을 목표로 합니다. ✨
- 백포워드 캐시(bfcache)는 방문했던 페이지의 DOM 상태, JS 힙, 렌더링 상태, 스크롤 위치 등을 메모리에 저장하여 뒤로/앞으로 가기 시 네트워크 요청 없이 즉시 페이지를 복원하는 핵심 렌더링 최적화 기술입니다. 💾
- 실행 최적화는 코드가 더 빠르고 효율적으로 실행되도록 관리하여 사용자의 인터랙션이 끊기거나 지연되지 않도록 보장합니다. ⚡
- JIT(Just-In-Time) 컴파일은 자주 실행되는 자바스크립트 코드를 기계어로 변환하여 캐싱하고 재사용함으로써 코드 실행 속도를 향상시킵니다. 🏎️
- 가비지 컬렉션은 더 이상 사용하지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지하고 효율적인 메모리 사용을 보장하는 중요한 실행 최적화 기능입니다. ♻️
- 이벤트 리스너, 타이머, 비동기 요청 등에서 발생하는 메모리 누수는 클린업 함수를 통해 제거, 해제, 취소함으로써 예방할 수 있습니다. 🧹
- 브라우저가 자동으로 네트워크, 렌더링, 실행 최적화를 수행하지만, 개발자가 이러한 메커니즘을 이해하고 적절히 협력할 때 사용자 경험은 더욱 극대화됩니다. 📈