Server-Timing-Middleware
Die Server-Timing-Middleware stellt Leistungskennzahlen in den Antwort-Headern bereit.
Info
Hinweis: Auf Cloudflare Workers sind die Zeitmessungen möglicherweise ungenau, da Timer nur den Zeitpunkt der letzten E/A anzeigen.
Import
import { Hono } from 'hono'
import {
timing,
setMetric,
startTime,
endTime,
wrapTime,
} from 'hono/timing'
import type { TimingVariables } from 'hono/timing'Verwendung
// Specify the variable types to infer the `c.get('metric')`:
type Variables = TimingVariables
const app = new Hono<{ Variables: Variables }>()
// add the middleware to your router
app.use(timing());
app.get('/', async (c) => {
// add custom metrics
setMetric(c, 'region', 'europe-west3')
// add custom metrics with timing, must be in milliseconds
setMetric(c, 'custom', 23.8, 'My custom Metric')
// start a new timer
startTime(c, 'db');
const data = await db.findMany(...);
// end the timer
endTime(c, 'db');
// ...or you can also just wrap a Promise using this function:
const data = await wrapTime(c, 'db', db.findMany(...));
return c.json({ response: data });
});Bedingt aktivieren
const app = new Hono()
app.use(
'*',
timing({
// c: Context of the request
enabled: (c) => c.req.method === 'POST',
})
)Ergebnis

Optionen
optional total: boolean
Zeigt die gesamte Antwortzeit an. Der Standardwert ist true.
optional enabled: boolean | (c: Context) => boolean
Gibt an, ob Zeitmessungen den Headern hinzugefügt werden sollen. Der Standardwert ist true.
optional totalDescription: string
Beschreibung für die gesamte Antwortzeit. Der Standardwert ist Total Response Time.
optional autoEnd: boolean
Gibt an, ob startTime() am Ende der Anfrage automatisch beendet werden soll. Wenn deaktiviert, werden Timer, die nicht manuell beendet wurden, nicht angezeigt.
optional crossOrigin: boolean | string | (c: Context) => boolean | string
Die Origin, von der aus dieser Timing-Header gelesen werden darf.
- Bei false nur von der aktuellen Origin.
- Bei true von allen Origins.
- Bei einer Zeichenfolge von den angegebenen Domains. Mehrere Domains müssen durch Kommas getrennt werden.
Der Standardwert ist false. Weitere Informationen findest du in der Dokumentation.