Server-Timing 미들웨어
Server-Timing 미들웨어는 응답 헤더에 성능 메트릭을 제공한다.
INFO
참고: Cloudflare Workers에서는 타이머가 마지막 I/O 시간만 표시하기 때문에, 타이머 메트릭이 정확하지 않을 수 있다.
Import
ts
import { Hono } from 'hono'
import { timing, setMetric, startTime, endTime } from 'hono/timing'
import type { TimingVariables } from 'hono/timing'사용 방법
js
// `c.get('metric')`의 타입 추론을 위해 변수 타입을 지정한다:
type Variables = TimingVariables
const app = new Hono<{ Variables: Variables }>()
// 라우터에 미들웨어를 추가한다
app.use(timing());
app.get('/', async (c) => {
// 커스텀 메트릭을 추가한다
setMetric(c, 'region', 'europe-west3')
// 타이밍이 포함된 커스텀 메트릭을 추가한다. 단위는 밀리초여야 한다
setMetric(c, 'custom', 23.8, 'My custom Metric')
// 새로운 타이머를 시작한다
startTime(c, 'db');
const data = await db.findMany(...);
// 타이머를 종료한다
endTime(c, 'db');
return c.json({ response: data });
});조건부 활성화
ts
const app = new Hono()
app.use(
'*',
timing({
// c: 요청의 Context
enabled: (c) => c.req.method === 'POST',
})
)결과

옵션
optional total: boolean
총 응답 시간을 표시한다. 기본값은 true이다.
optional enabled: boolean | (c: Context) => boolean
헤더에 타이밍 정보를 추가할지 여부를 결정한다. 기본값은 true이다.
선택 사항 totalDescription: boolean
전체 응답 시간에 대한 설명. 기본값은 Total Response Time이다.
옵션 autoEnd: boolean
startTime()이 요청이 끝날 때 자동으로 종료되어야 하는지 여부를 설정한다.
이 기능을 비활성화하면, 수동으로 종료하지 않은 타이머는 표시되지 않는다.
선택 사항 crossOrigin: boolean | string | (c: Context) => boolean | string
이 타이밍 헤더를 읽을 수 있는 오리진을 지정한다.
- false일 경우, 현재 오리진에서만 읽을 수 있다.
- true일 경우, 모든 오리진에서 읽을 수 있다.
- 문자열일 경우, 지정된 도메인에서 읽을 수 있다. 여러 도메인을 지정할 때는 쉼표로 구분한다.
기본값은 false이다. 자세한 내용은 문서를 참고한다.