Time to Interactive (TTI)

페이지가 로드되기 시작한 시점부터 주요 하위 리소스가 로드된 후 사용자 입력에 안정적으로 응답할 수 있게 되기까지의 시간이다.

웹 페이지의 성능 추적을 기반으로 TTI를 계산하려면 다음 단계를 따른다.

  1. FCP 이후의 성능 추적 로그를 확인한다.
  2. 최소 5초 이상 조용한 기간을 찾는다. 조용한 기간이란 긴 작업이 없고 GET 요청이 2개 미만인 기간을 뜻한다. 긴 작업은 메인 스레드를 50밀리초 이상 블로킹하는 작업을 말한다.
  3. 위에서 찾은 조용한 구간부터 시작해서, FCP 까지 역방향으로 검색하며 마지막 긴 작업을 찾는다.
  4. TTI는 조용한 기간 전 마지막 긴 작업의 종료까지 걸리는 시간이다. 긴 작업이 발생하지 않았을 경우에는 FCP와 동일한 값이다.

요약하자면 FCP 이후 메인 스레드를 오래 블로킹하는 작업이 모두 끝나기 까지의 시간이다.

SSR과 같은 기술을 사용하면 표시 속도는 빨라지지만 TTI가 희생될 수 있다. 이 경우 화면은 출력되지만 반응하지 않기 때문에, 사용자는 페이지의 응답 속도가 느리다고 생각하거나 먹통이라고 생각할 수 있다.

이를 피하기 위해서는 FCPTTI 사이 간격을 최소화해야 한다. 또한 출력 속도와 반응 속도 간 차이가 있을 경우 시각적 요소를 통해 분명히 알려주어야 한다. 일반적으로 TTI5초 이하여야 한다.

First Input Delay (FID)

사용자가 링크를 클릭하거나, 버튼을 탭하는 등 처음 상호작용할 때부터 이에 대한 이벤트 핸들러 처리를 시작하기 까지의 걸리는 시간이다.

핸들러 처리 종료 시점이 아니라 시작 시점을 측정하는 이유는 비동기 이벤트 핸들러 등에서도 일괄된 수치를 측정하기 위해서이다.

좋은 사용자 경험을 제공하려면 100밀리초 이하여야 하며, 75번째 백분위수를 측정한다. FID는 유저 시나리오에 따라 다르며, 사용자가 있어야 측정 가능하므로 자동 벤치마크에서는 TBT를 대신 측정한다. TBTFID와 밀접한 연관이 있다.