모바일 긴 작업을 만든 JavaScript Detection 진단

이 글의 목차 4개 항목
  • 분야: DevOps
  • 기술 스택: Cloudflare JavaScript Detections · Lighthouse · Chrome

문제와 원인

모바일 홈과 SQLD 가이드에서 Cloudflare JavaScript Detection(JSD)의 main.js가 메인 스레드를 길게 점유했다. 보관된 Lighthouse 보고서 12개 모두 최장 작업의 URL이 Cloudflare challenge platform이었다. 모바일 홈의 JSD 최장 작업은 687.585~1,203ms, 모바일 가이드는 1,175~1,193ms였다.

JSD는 Cloudflare가 HTML 응답에 주입하며 애플리케이션 번들에 포함되지 않는다.

진단 결과

홈 모바일의 최장 작업

홈 모바일 두 번째 실행의 audits.long-tasks.details.items에는 다음 항목이 기록돼 있다.

{
  "url": "/cdn-cgi/challenge-platform/scripts/jsd/main.js",
  "duration": 1196,
  "startTime": 3536.946
}

duration은 작업 실행 시간, startTime은 탐색 타임라인의 시작 위치이며 단위는 ms다.

Lighthouse 측정

과거 운영 페이지의 cold 측정 12개를 집계했다. Lighthouse, HeadlessChrome, macOS arm64에서 홈·가이드의 모바일·데스크톱 조합을 각각 3회 순차 실행하고 storage reset을 적용했다. 모바일 조건은 412×823 CSS px, DPR 1.75, CPU 4배 감속, devtools 네트워크 제한이었다. 네트워크 설정은 RTT 150ms, throughput 1,638.4Kbps, request latency 562.5ms, download throughput 1,474.56Kbps였다.

경로·프로필페이지 TBT 3회 중앙값JSD 최장 작업 3회 중앙값
홈 / · 모바일1,124ms1,196ms
/guides/sqld · 모바일1,128ms1,178ms
홈 / · 데스크톱247ms297ms
/guides/sqld · 데스크톱255ms305ms
모바일 실행홈 TBT홈 JSD 최장 작업가이드 TBT가이드 JSD 최장 작업
1회637.585ms687.585ms1,143ms1,193ms
2회1,124ms1,196ms1,125ms1,175ms
3회1,153ms1,203ms1,128ms1,178ms

TBT는 측정 구간의 긴 작업에서 50ms를 넘는 차단 시간을 합산한다. JSD 최장 작업의 전체 실행 시간과는 집계 방식이 다르다.

홈 모바일의 JSD 긴 작업 1,196ms원본 보기 (새 창)

홈 모바일의 JSD 긴 작업 1,196ms

100%원본 보기 (새 창)

확대한 이미지는 상하좌우로 이동할 수 있습니다. 키보드는 이미지 영역에 초점을 두고 방향키를 사용하세요. Esc로 닫습니다.

보고서 합계 1,259ms는 JSD 1,196ms와 다른 작업 63ms의 실행 시간 합계다. 시작 위치 3,537ms는 원본 3,536.946ms의 반올림 값이다.