PerformanceServerTiming
注意:此功能在Web Workers中可用。
PerformanceServerTiming
接口显示了与响应一起发送到Server-Timing
HTTP 标头中的服务器指标。
此接口仅限于同一来源,但您可以使用Timing-Allow-Origin
标头来指定允许访问服务器指标的域。请注意,此接口仅在一些浏览器中的安全上下文(HTTPS)中可用。
实例属性
PerformanceServerTiming.description
只读-
服务器指定指标描述的字符串值,或空字符串。
PerformanceServerTiming.duration
只读-
包含服务器指定指标持续时间的双精度数,或值为
0.0
。 PerformanceServerTiming.name
只读-
服务器指定指标名称的字符串值。
实例方法
PerformanceServerTiming.toJSON()
-
返回
PerformanceServerTiming
对象的 JSON 表示形式。
示例
假设一个发送Server-Timing
标头的服务器,例如一个这样的 Node.js 服务器
js
const http = require("http");
function requestHandler(request, response) {
const headers = {
"Server-Timing": `
cache;desc="Cache Read";dur=23.2,
db;dur=53,
app;dur=47.2
`.replace(/\n/g, ""),
};
response.writeHead(200, headers);
response.write("");
return setTimeout(() => {
response.end();
}, 1000);
}
http.createServer(requestHandler).listen(3000).on("error", console.error);
现在可以通过 JavaScript 使用PerformanceResourceTiming.serverTiming
属性观察PerformanceServerTiming
条目,它们存在于navigation
和resource
条目中。
使用PerformanceObserver
的示例,它会通知新的navigation
和resource
性能条目,因为它们在浏览器的性能时间线中被记录。使用buffered
选项可以访问在观察者创建之前的条目。
js
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
entry.serverTiming.forEach((serverEntry) => {
console.log(
`${serverEntry.name} (${serverEntry.description}) duration: ${serverEntry.duration}`,
);
// Logs "cache (Cache Read) duration: 23.2"
// Logs "db () duration: 53"
// Logs "app () duration: 47.2"
});
});
});
["navigation", "resource"].forEach((type) =>
observer.observe({ type, buffered: true }),
);
使用Performance.getEntriesByType()
的示例,它仅显示在您调用此方法时浏览器性能时间线中存在的navigation
和resource
性能条目
js
for (const entryType of ["navigation", "resource"]) {
for (const { name: url, serverTiming } of performance.getEntriesByType(
entryType,
)) {
if (serverTiming) {
for (const { name, description, duration } of serverTiming) {
console.log(`${name} (${description}) duration: ${duration}`);
// Logs "cache (Cache Read) duration: 23.2"
// Logs "db () duration: 53"
// Logs "app () duration: 47.2"
}
}
}
}
规范
规范 |
---|
服务器计时 # the-performanceservertiming-interface |
浏览器兼容性
BCD 表仅在浏览器中加载