# 性能监控

# LCP 和 FCP

LCP(Largest Contentful Paint)和 FCP(First Contentful Paint)都是衡量网页加载性能的重要指标,但它们关注的焦点不同。下面是它们的区别:

# FCP (First Contentful Paint)

  • 定义:FCP 是指浏览器渲染出第一片可见内容的时间点。这可以是任何非空白的内容,包括文本、图片、SVG、非空白的 canvas 等。
  • 特点
    • 首次视觉反馈:FCP 标志着用户开始看到页面上的内容,而不是一个完全空白的屏幕。
    • 早期感知:它反映了用户对页面加载速度的最早感知,即使页面还没有完全加载完毕。
  • 重要性:FCP 对用户体验非常重要,因为它直接影响用户对网站加载速度的第一印象。较快的 FCP 时间可以减少用户的等待焦虑,提高用户满意度。

# LCP (Largest Contentful Paint)

  • 定义:LCP 是指页面上最大的内容元素(通常是图片或文本块)被渲染到屏幕上的时间。这个元素通常是页面的主要内容之一,对用户的视觉体验有较大影响。
  • 特点
    • 主要内容加载:LCP 关注的是页面上最重要的视觉内容何时加载完成,这通常标志着用户可以看到页面的核心信息。
    • 用户体验:LCP 是衡量用户是否觉得页面已经“足够加载”以进行交互的一个重要指标。
  • 重要性:LCP 是衡量页面加载性能的关键指标之一,特别是在 Google 的 Core Web Vitals 中占有重要地位。优化 LCP 可以显著改善用户的整体体验,提高页面的搜索排名。

# 区别总结

  • 时间点

    • FCP:页面上第一个可见内容的渲染时间。
    • LCP:页面上最大内容元素的渲染时间。
  • 内容范围

    • FCP:任何非空白内容,可以是简单的文本或小图标。
    • LCP:页面上最大的内容元素,通常是图片或大块文本。
  • 用户体验

    • FCP:用户开始看到内容的时间,减少了白屏时间。
    • LCP:用户看到主要内容的时间,提高了对页面加载速度的整体感知。

# 优化建议

  • 优化 FCP

    • 减少服务器响应时间。
    • 优化 CSS 和 JavaScript 的加载和执行。
    • 使用浏览器缓存和资源预加载技术。
  • 优化 LCP

    • 压缩和优化图片大小。
    • 使用懒加载技术延迟非关键资源的加载。
    • 优化关键渲染路径,确保主要内容优先加载。

# 如何计算 FCP 和 LCP

FCP

if (performance.getEntriesByType) {
  const performanceEntries = performance.getEntriesByType('paint');
  const fcpEntry = performanceEntries.find(entry => entry.name === 'first-contentful-paint');
  
  if (fcpEntry) {
    console.log('FCP:', fcpEntry.startTime, 'ms');
  } else {
    console.log('FCP not available');
  }
}

LCP

if (performance.getEntriesByType) {
  const performanceEntries = performance.getEntriesByType('largest-contentful-paint');
  const lcpEntry = performanceEntries[0]; // 通常只有一个 LCP 事件
  
  if (lcpEntry) {
    console.log('LCP:', lcpEntry.renderTime || lcpEntry.loadTime, 'ms');
  } else {
    console.log('LCP not available');
  }
}

# 接口性能监控

在 http header 上面添加标记,然后判断当前是接口是否是轮询,如果是轮询。

维护一个请求池,再劫持 response,监听当前的请求,是否完成,如何完成,则删除该请求。

上次更新: 11/6/2024, 4:10:52 PM