首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Next.js-水化前,Next.js-水化和FCP

Next.js-水化前,Next.js-水化和FCP
EN

Stack Overflow用户
提问于 2021-03-28 20:17:59
回答 1查看 5.9K关注 0票数 10

我想知道是否有人能解释一下时间指标Next.js-before-hydrationNext.js-hydration意味着什么,以及它们与FCP的关系。这是用于服务器端呈现和使用客户端钩子的NextJS应用程序。

这里是一个性能选项卡度量的屏幕截图,这是一个新的页面负载,将击中react服务器和SSR。这个特定的页面有一些组件,在页面结束之前,这些组件也会在客户端重新呈现很多次。我已经放大到这个领域,从最初的请求开始,包括最初的核心web生命周期,比如FCP和LCP。(TTI和TTFB很晚才离开屏幕。)

Next.js-before-hydration似乎正是在服务器请求启动时启动的。(影片中的缩略图显示的是之前浏览器中的缩略图,这看起来像是devtools的错误,所以忽略它。)

在这个例子中,Next.js-before-hydration持续1.48秒,但是对于这个请求,TTFB只有120 so,所以我知道它包含的不仅仅是服务器响应时间。

我知道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时,意味着什么呢?它是否与“第一次”呈现完成时间(意味着每个组件第一次加载时,就像中的第一个呈现)以及钩子何时开始运行有关?

最后,Next.js-hydration的结束意味着什么,以及这两个指标与FCP的关系如何?

EN

回答 1

Stack Overflow用户

发布于 2021-04-28 18:13:22

经过几个星期的学习和调查,我认为答案基本上是-

FCP与Next.js-hydrationNext.js-before-hydration无直接关系。

部分原因是将“呈现”一词的定义合并在一起。

FCP确实是"TTFB +内容加载时间+呈现时间“。但在这种情况下,“呈现”与“呈现”的反应定义无关。在这种情况下,“呈现”更多地是关于在绘制之前发生的html呈现阶段。许多浏览器可能会尝试将元素绘制到屏幕上,甚至在Dom内容完成加载之前(甚至在domInteractive之前,我也不确定)。

因此,有时FCP可能发生在Next.js-before-hydration完成之前,而在其他情况下,它可能要到晚些时候才会发生。在问题的例子中,性能评估处于开发模式,这可能会延迟FCP。

至于Next.js-before-hydrationNext.js-hydration之间的区别,需要记住的是,在加载所有必要的反应库之前,水化甚至是不可能的。

这意味着,根据定义,Next.js-before-hydration包括:

下载初始html (包括TTFB)所花费的时间(包括TTFB)--通过必要的脚本标记来解析初始html所花费的时间,这些脚本标记加载了environment. libs

  • ,下载那些关键的javascript块文件所花费的时间(

  • ),评估/执行这些javascript块文件所花费的时间,以及加载react

只有在这一点上,反应水化过程才能开始。我认为反应水化过程是关于处理react呈现#1,并将React事件模型附加到第一次呈现的所有组件上。

只有在Next.js-hydration完成协调(额外的提交/呈现)之后,才有可能进行协调。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66845811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档