【发布时间】:2021-06-24 23:40:44
【问题描述】:
我想知道是否有人可以解释计时指标 Next.js-before-hydration 和 Next.js-hydration 的含义,以及它们与 FCP 的关系。这是针对服务器端渲染并在客户端使用钩子的 NextJS 应用程序。
这是一个性能标签测量的屏幕截图,它是一个新的页面加载,它将影响反应服务器和 SSR。此特定页面的组件也会在页面稳定之前在客户端重新渲染多次。我从最初的请求开始放大到该区域,包括 FCP 和 LCP 等初始核心网络生命力。 (TTI 和 TTFB 离屏幕要晚得多。)
Next.js-before-hydration 似乎恰好在服务器请求开始时开始。 (幻灯片似乎显示了以前在浏览器中的页面的缩略图,这似乎是一个 devtools 错误,因此请忽略它。)
Next.js-before-hydration 在这个例子中持续了 1.48 秒,但是对于这个请求,TTFB 只有 120 毫秒,所以我知道它包含的不仅仅是服务器响应时间。
我知道 FCP 是“TTFB + 内容加载时间 + 渲染时间”,所以我认为 Next.js-before-hydration 一定是其中的一个子集,但我看过其他网站的例子(ticketmaster.com 就是一个例子) Next.js-before-hydration 的结尾远远超出 FP/FCP,Next.js-hydration 的结尾甚至更晚——有时就在 onLoad 事件之前(红色的L)。
通过胶片,内容开始逐步显示在我们到达Next.js-hydration(在图像中标记为Next.js...dration),这让我觉得它已经开始运行了钩子并重新渲染。
那么 NextJS 从 Next.js-before-hydration 转换到 Next.js-hydration 是什么意思呢?它是否与“第一次”渲染完成的时间(即每个组件第一次加载,如 React Profiler 中的第一次渲染)以及钩子何时开始运行有关?
最后,Next.js-hydration 的结尾是什么意思,这两个指标与 FCP 有什么关系?
【问题讨论】:
标签: reactjs google-chrome-devtools next.js lighthouse core-web-vitals