前言
1.performance
- 用于精确度量,控制,增强浏览器的性能表现。这个API为了测量网站性能,提供以前没有办法做到的精度。
2.web-vitals插件
3.PerformanceObserver
- PerformanceObserver 可用于获取性能相关的数据,例如首帧fp、首屏fcp、首次有意义的绘制 fmp等等。可以用它来获取首屏、白屏的时间
1.获取静态资源
const entries = performance.getEntriesByType('resource');
let list = entries.filter(entry => {
return ['fetch', 'xmlhttprequest', 'beacon'].indexOf(entry.initiatorType) === -1;
});
2.获取内存情况
let jsHeapSizeLimit = performance.memory && performance.memory.jsHeapSizeLimit,
let totalJSHeapSize = performance.memory && performance.memory.totalJSHeapSize,
let usedJSHeapSize = performance.memory && performance.memory.usedJSHeapSize,
3.长任务加载详情
const observer = new PerformanceObserver((list) => {
for(const entry of list.getEntries()){
console.groupCollapsed(entry.name);
console.log(entry.entryType);
console.log(entry.startTime);
console.log(entry.duration);
console.groupEnd(entry.name);
}
})
observer.observe({entryTypes:['longtask']});
4.获取FCP、LCP、TTFB、FID等指标
import { onLCP, onFID, onCLS, onFCP, onTTFB } from 'web-vitals';
const observer = new PerformanceObserver((list) => {
for(const entry of list.getEntries()){
console.groupCollapsed(entry.name);
console.log(entry.entryType);
console.log(entry.startTime);
console.log(entry.duration);
console.groupEnd(entry.name);
}
})
observer.observe({entryTypes:['paint','largest-contentful-paint','first-input','layout-shift','navigation']});