Server-Timing 中间件
Server-Timing 中间件在响应头中提供性能指标。
INFO
注意: 在 Cloudflare Workers 上,定时器指标可能不准确,因为定时器仅显示上次 I/O 的时间。
导入
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',
})
)
结果
选项
可选 total: boolean
显示总响应时间。 默认为 true
。
可选 enabled: boolean
| (c: Context) => boolean
是否应将定时添加到标头。 默认为 true
。
可选 totalDescription: boolean
总响应时间的描述。 默认为 Total Response Time
。
可选 autoEnd: boolean
是否应在请求结束时自动结束 startTime()
。 如果禁用,则不会显示未手动结束的定时器。
可选 crossOrigin: boolean
| string
| (c: Context) => boolean | string
此定时标头应可读取的来源。
- 如果为 false,则仅来自当前来源。
- 如果为 true,则来自所有来源。
- 如果为字符串,则来自此域。 多个域必须用逗号分隔。
默认为 false
。 更多信息请参阅 文档。