性能优化-LCP
性能优化-LCP
性能优化- 提升 LCP(Largest Contentful Paint 最大内容绘制)
简介
LCP 就是网页中最大的一部分加载完成的时间(从用户感知页面到基本加载完成的时间,也称为最大内容绘制)
LCP 是 Core Web Vitals 的三个关键指标之一,Core Web Vitals 是 Google 用于评估网页用户体验的标准之一。为了获得良好的用户体验,Google 建议 LCP 时间在 2.5 秒以内。如果 LCP 超过 4 秒,则需要进行优化
Google将LCP看做提高搜索引擎排名的参数之一
测量方式
Lighthouse
LCP通常在Google浏览器的这个部分可以看到
代码测量
纯html页面
接下来我们就手写代码手动测量一下网页的LCP部分
// 初始化 LCP 存储
let lcp = 0;
// 使用 PerformanceObserver 来监听 largest-contentful-paint
const observer=new PerformanceObserver((entryList) => {
const entries=entryList.getEntries();
console.log(entries,'entries');
entries.forEach((entry) => {
if (entry.entryType === 'largest-contentful-paint') {
if(entry.startTime > lcp){
lcp = entry.startTime;
console.log('LCP值为+'+lcp);
document.getElementById('lcp').textContent = lcp.toFixed(2) + 'ms';
}
}
})
})
// 观察 largest-contentful-paint 事件
observer.observe({ type: 'largest-contentful-paint', buffered: true });
在vue2之中使用
<template>
<div>
<p>LCP: {{ lcp }}</p>
</div>
</template>
<script>
export default {
data() {
return {
lcp: 0, // 用于存储 LCP 的最大值
};
},
mounted() {
// 使用 PerformanceObserver 来观察 LCP
const observer = new PerformanceObserver((entryList) => {
const entries = entryList.getEntries();
entries.forEach((entry) => {
if (entry.entryType === 'largest-contentful-paint') {
// 更新 LCP 值为最大的 LCP
if (entry.startTime > this.lcp) {
this.lcp = entry.startTime;
console.log(`LCP: ${this.lcp}`);
}
}
});
});
// 观察 largest-contentful-paint 事件
observer.observe({ type: 'largest-contentful-paint', buffered: true });
},
};
</script>
其他方式
- Google PageSpeed Insights:提供对 LCP 的详细分析,并提出优化建议。
- Web Vitals 扩展:Google Chrome 浏览器的 Web Vitals 扩展可以实时监控 LCP。
- Lighthouse:Lighthouse 是一个开源工具,用于分析网页性能,包含对 LCP 的评估。
- Web.dev:这是一个由 Google 提供的在线工具,用于测试网页性能,并生成优化建议。
触发元素
LCP最常见的容易触发的包含以下部分:
- 图像 (
<img>
元素) - 图片背景 (
<image>
或 CSSbackground-image
) - 块级文本元素(如
<div>
,<p>
,<h1>
等) - 视频海报 (
<video>
元素内的poster
属性)
这些元素在视口内加载时,浏览器会记录它们的渲染时间,并将其中加载时间最长的元素作为 LCP
优化 LCP
优化LCP也是从上面的元素入手进行优化
CSS 和 JavaScript
避免使用阻塞渲染的 CSS 和 JavaScript,我们可以将 CSS 放在 <head>
,js放入底部同时使用使用 async
和 defer
属性
简化DOM 和 CSSOM 树
减少不必要的 HTML 和 CSS,避免深层嵌套结构
利用浏览器缓存
缓存静态资源,如 CSS 和 JavaScript 文件,减少重新加载时间
优化图片和其他资源
使用现代格式的压缩图片,减少图片大小,使用懒加载技术避免加载不在视口中的图片
- 随机文章
- 热门文章
- 热评文章
- 揭秘人际关系的秘密:心理测试与实用策略人际关系心理测试题及答案
- 普通话水平测试用普通话词语表普通话水平测题
- 性格趣味小测试题 有趣的心理测试题大全及答案
- Java WebSocket 聊天系统
- 鸿蒙动画与交互设计:ArkUI 3D变换与手势事件详解
- 性格测试 测你的性格像《三十而已》中的谁
- 4月阅读周·HTTP权威指南:客户端识别与cookie机制之会话跟踪和缓存篇
- Arthas stack (输出当前方法被调用的调用路径)
- 性格测一测 测你哪方面厉害的让人嫉妒