performance性能监控

详细看MDN上

setTimeout(() => {
    
    
const {
    
    
	fetchStart, // 开始访问
	requestStart, // 请求的开始
	responseStart, // 响应的开始
	responseEnd, // 响应的结束
	domIntereactive, // 可交互的时间的点
	domContentLoadedEventEnd, // dom加载完毕 + domContentLoad完成的事件 $(function(){})
	loadEventStart // 开始访问
} = performance.timing
	
	let TTFB (time to first bate) = requestStart - requestStart  // 首字节返回的事件 服务器的处理能力
 
 	let TTI (time to Intereactive) = domIntereactive - fetchStart // 整个的一个交互的时长
 
 	let DCL (DOMContentLoaded)= domContentLoadedEventEnd - fetchStart // DOM整个加载完毕
 
 	let L (onLoad)= loadEventStart - fetchStart // 所有资源加载完毕用的时长

	const paint = performance.getEntriesByType('paint')

	console.log(paint[0].startTime) // FP只是画像素的
	console.log(paint[1].startTime) // FCP dom元素要有内容才行
}, 3000)

// 监听有意义的元素渲染时间
new performanceObserver((entryList, observer) => {
    
    
	console.log(entryList.getEntries()[0])
	observer.disconnect()
}).observe({
    
     entryTypes:['element'] })

// LCP 监听最大元素渲染时间
new performanceObserver((entryList, observer) => {
    
    
	const list = entryList.getEntries()
	console.log(list[list .length - 1])
	observer.disconnect()
}).observe({
    
     entryTypes:['largest-contentful-paint'] })


网络策略优化

1.减少http请求
2.合理设置服务器缓存,提高服务器处理速度。(强制缓存、对比缓存)
3.避免重定向重定向会降低响应速度
4,dns-prefetch 进行DNS预解析 link标签上加dns-prefetch
5.采用域名分片技术,将资源放到不同的域名下。接触同一个域名最多处理6个TCP链接问题。
6.采用CDN加速加快访问速度。(指派最近、高度可用)
7.gzip 压缩优化 对传输资源进行体积压缩(html、js、css)
8.加载数据优先级:preload(预先请求)prefetch(浏览器空闲时预判加载)将数据缓存到HTTP缓存中

关键渲染路径: js——样式计算——布局(回流)——重绘——合成

回流(重排)Reflow:添加元素、删除元素、修改大小、移动元素位置、获取位置相关信息
重绘 Repaint: 页面中元素样式的改变并不影响他在文档流中的位置

如何减少重回回流

1.脱离文档流
2.渲染时给图片增加固定宽高
3.多使用css3动画
4.可以使用style=“will-change: transform;”>将dom提取到单独的图层中

重排的时机是在js执行后 所以尽量少去将这些操作放在函数中,比如在函数中多次获取dom位置,应当在外面获取好了在浏览器里面使用

猜你喜欢

转载自blog.csdn.net/weixin_44441196/article/details/122546320