https://juejin.cn/post/6916527678807867400

关键指标 白屏时间:从浏览器输入地址并回车后到页面开始有内容的时间; 首屏时间:从浏览器输入地址并回车后到首屏内容渲染完毕的时间; 用户可操作时间节点:domready触发节点,点击事件有反应; 总下载时间:window.onload的触发节点。

白屏幕时间计算:chrome.loadingTimes() 我们可以看到 firstPaintTime 这个时间点,是你的页面出现内容后的时间点..如果页面一直白屏的话,firstPaintTime的值是0。

<!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 白屏时间:responseStart - navigationStart

首屏时间(First Contentful Paint):是指浏览器从响应用户输入网络地址,到首屏内容渲染完成的时间。

首屏时间 = 首屏内容渲染结束时间点 - 开始请求的时间点

首屏时间:performance.getEntriesByName("first-contentful-paint")[0].startTime - navigationStart

首屏时间是指用户打开网站开始,到浏览器首屏内容渲染完成的时间。对于用户体验来说,首屏时间是用户对一个网站的重要体验因素。通常一个网站,如果首屏时间在5秒以内是比较优秀的,10秒以内是可以接受的,10秒以上就不可容忍了。超过10秒的首屏时间用户会选择刷新页面或立刻离开。

DOM ready时间:domContentLoadedEventEnd - navigationStart

白屏和首屏的优化 目前白屏常见的优化方案有:

SSR 预渲染 骨架屏

优化首屏加载时间的方法: CDN分发(减少传输距离) 后端在业务层的缓存 静态文件缓存方案 前端的资源动态加载 减少请求的数量 利用好HTTP压缩

上次更新:
贡献者: 郑壮