性能优化-LCP

测试智商的网站 19小时前 阅读数 8346 #软件测试

性能优化-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> 或 CSS background-image)
  • 块级文本元素(如 <div>, <p>, <h1> 等)
  • 视频海报 (<video> 元素内的 poster 属性)

这些元素在视口内加载时,浏览器会记录它们的渲染时间,并将其中加载时间最长的元素作为 LCP

优化 LCP

优化LCP也是从上面的元素入手进行优化

CSS 和 JavaScript

避免使用阻塞渲染的 CSS 和 JavaScript,我们可以将 CSS 放在 <head>,js放入底部同时使用使用 asyncdefer 属性

简化DOM 和 CSSOM 树

减少不必要的 HTML 和 CSS,避免深层嵌套结构

利用浏览器缓存

缓存静态资源,如 CSS 和 JavaScript 文件,减少重新加载时间

优化图片和其他资源

使用现代格式的压缩图片,减少图片大小,使用懒加载技术避免加载不在视口中的图片

  • 随机文章
  • 热门文章
  • 热评文章
热门