我可以在Chrome开发者工具中看到网页中所有资源的加载时间、从服务器获取某个特定资源所需的时间以及其他信息。
我想使用JavaScript捕获这些统计数据。这是否可能?
虽然有window.performance对象可用于请求的页面,但无法用于页面资源。 是否有办法访问所有页面资源的性能对象。
我可以在Chrome开发者工具中看到网页中所有资源的加载时间、从服务器获取某个特定资源所需的时间以及其他信息。
我想使用JavaScript捕获这些统计数据。这是否可能?
虽然有window.performance对象可用于请求的页面,但无法用于页面资源。 是否有办法访问所有页面资源的性能对象。
您应该能够使用window.performance.getEntries()
来获取资源特定的统计信息:
var resource = window.performance.getEntries()[0];
console.log(resource.entryType); // "resource"
console.log(resource.duration); // 39.00000000430737
console.log(resource.startTime); // 218.0000000007567
以下是来自上述链接的示例:
(注:此文本为中英混排,请确认可读性)
getEntriesByType('resource')
,因为其他类型都会被跟踪(render
、composite
、mark
等)。 - Rudie最新版本的chrome - 29.0.1547.76 m仍存在一个错误。当您发起xmlhttprequest请求时,比如下载图片,您可以在网络选项卡中看到该资源以状态码200 OK下载,但是performance.getEntries()或performance.getEntriesByName(resourceUrl)没有列出该资源条目。当页面加载完成并在控制台中评估performance.getEntriesByName(resourceUrl)时,它会正确地列出。因此,在Chrome中填充性能条目时存在延迟?在IE10中,这完全正常。
window.performance.getEntries()可能无法返回所有资源。在缓冲一些记录后,某些记录会消失。需要在发生之前进行检查。
头部代码部分
var storedEntries = [];
var updateStoredEntries = p => {
storedEntries.concat(
p.getEntries().filter(rec => /yourRegExp/.test(rec.name))
)
};
performance.addEventListener('resourcetimingbufferfull', e => {
updateStoredEntries(e.target)
});
updateStoredEntries(performance)
resourcetimingbufferfull
,因此它将丢失数据,并且随着更多的条目被丢弃在地面上,事件会不断触发... - rogerdpack
Google
请教一下。 - Shawn31313