Server-Timing
응답 헤더 Performance

개요

Server-Timing은 서버가 요청을 처리하며 측정한 성능 지표(구간별 소요 시간 등)를 응답에 실어 브라우저 개발자 도구와 클라이언트 스크립트에 노출하는 응답 헤더입니다. 서버 내부 지연을 프런트엔드 성능 데이터와 한자리에서 볼 수 있게 합니다.

각 지표는 `이름;dur=밀리초;desc="설명"` 형태이며 쉼표로 여러 개 나열합니다(예: `Server-Timing: db;dur=53.2;desc="Database query", cache;dur=1.5`).

자세히

전통적으로 서버 처리 시간은 로그·APM에만 남아 프런트엔드에서 보이지 않았습니다. Server-Timing은 이 값을 표준화된 형태로 응답에 실어, 브라우저 DevTools의 Network 탭 Timing 섹션에 '서버 처리 세부 구간'으로 표시되게 합니다. DB 조회·캐시 조회·템플릿 렌더 같은 단계별 시간을 한 요청에서 확인할 수 있습니다.

실사용 RUM(Real User Monitoring)과의 결합이 강력합니다. 클라이언트의 `PerformanceObserver`/`PerformanceServerTiming` API로 이 값을 자바스크립트에서 읽어, 실제 사용자 환경에서의 서버 지연을 수집·집계할 수 있습니다. 이렇게 하면 합성 모니터링이 아니라 진짜 사용자 트래픽 기준으로 백엔드 병목을 추적합니다.

크로스 오리진 제약에 주의해야 합니다. 다른 오리진의 리소스에 대한 Server-Timing 값을 스크립트로 읽으려면, 해당 응답이 `Timing-Allow-Origin` 헤더로 접근을 허용해야 합니다. 또한 desc·name에 내부 구조(테이블명·서비스명·경로)를 담으면 정보 누출이 될 수 있으므로, 외부 노출 환경에서는 지표를 익명화하거나 프로덕션에서 축소하는 것이 안전합니다.

문법

Server-Timing: <name>[;dur=<ms>][;desc="<text>"][, ...]

e.g. Server-Timing: db;dur=53.2;desc="Database query", cache;dur=1.5

지시어 / 값

<name>측정 지표의 식별자(예: db, cache, app). 개발자 도구·RUM에서 이 이름으로 표시됨.
dur=<ms>해당 작업의 소요 시간(밀리초). 서버 처리 구간별 지연을 나타냄.
desc=<text>지표에 대한 사람이 읽을 설명(공백 포함 시 따옴표).

실무 참고

관련 헤더

스펙 근거