fe-notes icon indicating copy to clipboard operation
fe-notes copied to clipboard

首屏、白屏时间计算

Open Inchill opened this issue 3 years ago • 0 comments

白屏

浏览器开始渲染

标签或者解析完 标签的时刻就是页面白屏结束的时间点。也就是说从显示内容前的时间。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>白屏</title>
  <script type="text/javascript">
    // 不兼容performance.timing 的浏览器,如IE8
    window.pageStartTime = Date.now();
  </script>
  <!-- 页面 CSS 资源 -->
  <link rel="stylesheet" href="common.css">
  <link rel="stylesheet" href="page.css">
  <script type="text/javascript">
    // 白屏时间结束点
    window.firstPaint = Date.now();
  </script>
</head>
<body>
  <!-- 页面内容 -->
</body>
</html>

可使用 Performance API 时

白屏时间 = firstPaint - performance.timing.navigationStart;

不可使用 Performance API 时

白屏时间 = firstPaint - pageStartTime;

首屏

首屏时间是指用户打开网站开始,到浏览器首屏内容渲染完成的时间。对于用户体验来说,首屏时间是用户对一个网站的重要体验因素。

首屏时间计算方法有:

  1. 首屏模块标签标记法(不常用)
  2. 统计首屏内加载最慢的图片的时间
  3. 自定义首屏内容计算法

由于统计首屏内图片完成加载的时间比较复杂。因此我们在业务中通常会通过自定义模块内容,来简化计算首屏时间。如下面的做法:

  • 忽略图片等资源加载情况,只考虑页面主要 DOM
  • 只考虑首屏的主要模块,而不是严格意义首屏线以上的所有内容

注意:首屏时间是包括了白屏时间的,因此可以使用 performance.timing.navigationStart 作为开始时间。

Inchill avatar Aug 12 '22 02:08 Inchill