目录
上下文:RSS提要应用程序
实验:移动导航切换
测试条件
指标
方法论
结果
讨论:浅呼叫堆栈
结论和建议
首页 web前端 css教程 RadeVentListener:客户端框架性能的故事

RadeVentListener:客户端框架性能的故事

Apr 03, 2025 am 10:26 AM

RadeVentListener:客户端框架性能的故事

React的受欢迎程度并非没有批评者。该框架的相当大的尺寸(约120 kib缩小)显着影响启动时间,尤其是仅依靠客户端渲染时。即使使用客户端水合的服务器端渲染也仍然是性能密集的。尽管React在复杂的州管理中表现出色,但其资源需求通常超过更简单的应用程序中的好处。这可以有效地排除使用功能较低的硬件的用户。

尽管我保留了React的性能开销,但我还是感谢其组件化模型和JSX语法。服务器端渲染(或使用preact,我首选的替代方案)仍然是宝贵的资产。但是,确定适当的客户端用法仍然是一个挑战。本文详细介绍了我有关优化React性能的发现,以获得更好的用户体验。

上下文:RSS提要应用程序

我的rss feed应用程序bylines.fyi在服务器和客户端都使用JavaScript。虽然我并不固有地不喜欢客户端框架,但我的经验突出了两个反复出现的问题:

  1. 框架可以掩盖基础的网络平台,从而阻碍对它们何时真正有益的深刻理解。
  2. 框架并不总是保证最佳用户体验。

蒂姆·卡德克(Tim Kadlec)对Web框架性能的Httparchive研究加剧了这些问题,揭示了React的表现不佳。我的目标是在减轻其客户端缺陷的同时利用React的服务器端优势。

实验:移动导航切换

我的RSS应用需要客户端的JavaScript来进行简单的移动导航切换,这是“简单状态”的经典示例。我经常看到反应组件过度用于此类简单任务,从而导致不必要的性能开销。该实验虽然看似琐碎,但它是了解框架选择如何扩展的关键基准。重要的是要注意,大多数开发人员不仅会依靠这种次要功能的反应,但是结果说明了对运行时性能的架构影响。

测试条件

该实验比较了四个设备上的三个移动导航实现:

  1. 状态反应组件:服务器渲染和客户端熔融。
  2. 状态的预先反应组件:服务器渲染和客户端水合。
  3. 无状态的提前部分:服务器渲染,水合;使用标准事件听众。

设备包括:

  1. 诺基亚2 Android电话(Chrome 83)
  2. 华硕X550CC笔记本电脑(Windows 10,Chrome 83)
  3. 第一代iPhone SE(Safari 13)
  4. 第二代iPhone SE(Safari 13)

指标

为每个实施和设备测量了以下指标:

  1. 启动时间:包括框架加载和水合(react/preaxct),或者只是事件侦听器代码(EventListener)。
  2. 水合时间:启动时间的子集(仅反应/预先反应)。
  3. 移动导航开放时间:在事件处理中测量框架开销。

方法论

测试涉及远程调试和分析,每个场景和设备的十个迭代记录了每个度量的CPU时间。网络性能不是一个因素。

结果

由于数据的复杂性,结果以表格格式显示,显示最小,最大,中值和平均CPU时间。 (详细的表格在随附的电子表格中可用)。关键发现包括:

  • React的高创业和水合成本:在低端诺基亚2上尤其明显。
  • PREACT的提高性能:比React的速度要快得多,但在诺基亚2上仍超出了理想的框架预算。
  • 卓越的事件听众的性能:始终比React和Exct都要快,尤其是对于简单的互动。

讨论:浅呼叫堆栈

性能差异源于框架加载和水合的开销。尽管某些性能权衡是不可避免的,但对于开发人员的便利性而言,余额通常会倾向于开发人员的体验,而用户则以牺牲用户为代价。呼叫堆栈的React和PreACT Hydration突出了重大处理需求,尤其是对于简单的任务。使用本地事件侦听器为简单的状态管理提供了一种更有效的方法。

结论和建议

这种分析不是作为反应批评的,而是鼓励批判性评估框架选择及其性能的影响。几种策略可以减轻绩效问题:

  1. 在可能的情况下,对无状态组件的重构状态组件。
  2. 避免客户端的JavaScript和无状态组件的水合。
  3. 使用独立于框架的事件听众进行简单的交互。
  4. 懒惰的水合物组件使用相交观察者或requestIdleCallback
  5. 将预先反应视为反应的更快替代方法。
  6. 使用navigator.deviceMemory适应低内存设备的用户体验。

优先考虑各种设备的性能测试,以确保具有不同硬件功能的用户包容性。目标应该是每个人的快速访问的网络体验。

特别感谢埃里克·贝利(Eric Bailey)的编辑反馈和CSS-Tricks员工发表本文。

以上是RadeVentListener:客户端框架性能的故事的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

See all articles