加密交易所新闻 加密活动与会议

Preply 如何提升 Next.js 应用的 INP 性能,年节约成本达20万美元

加密交易所新闻 加密活动与会议
Preply improved INP and save 200K$/Y on a Next.js application (without RSCs)

本文深入探讨了 Preply 在未采用 React Server Components 和 App Router 的情况下,如何通过多项优化措施显著提升 Next.js 应用的交互性能(INP),并实现了每年20万美元的成本节约。文章涵盖了项目背景、技术细节、数据驱动的优化策略及未来展望,适合前端开发者及性能优化工程师阅读。

随着互联网应用竞争日益激烈,网站性能已成为影响用户体验、搜索引擎排名和广告投放效果的重要因素。Preply 是一家专注于在线辅导的 B2C 和 B2B 平台,面对激烈的市场与用户需求,其前端团队针对性能指标中的核心项目之一——交互到下一画面(INP),开展了深入的研发和优化。借助 Next.js 框架,该团队成功将两个最重要页面的 INP 值从“黄色区间”优化至“绿色区间”,并显著降低了整体成本,预计每年节省约20万美元。本文将分享 Preply 如何在未采用 React Server Components(RSC)和 Next.js 最新 App Router 的情况下,通过数据驱动的多重策略,实现这一性能突破,并探索未来持续优化的可能路径。 首先,要理解为什么 INP 作为页面性能的重要指标备受关注。作为谷歌核心 Web Vitals 的组成部分,INP 衡量用户在页面上的所有交互(点击、键盘事件、触摸等)的响应时长,代表了较长交互所经历的延迟,因此对用户实际体验影响巨大。

对于 Preply 这样以 SEO 和 SEM 为驱动的产品,页面速度不仅影响搜索引擎排名,从而决定自然流量,也直接关系到广告质量得分,进而影响每次点击费用和广告展示排名。更快的交互速度意味着更高的用户留存率和转化率,直接带来业务增长。 Preply 现有的技术架构基于 Next.js 13,使用 React 18,采用多页面应用(MPA)模式且通过 Pages Router 进行服务端渲染。尽管拥有丰富功能,应用程序的技术负债较重,且索引页面众多,但从 SEO 和 SEM 角度看,主页和搜索页尤为关键,二者特点迥异:主页代码量简洁,交互点有限,主要是滑块和隐私条;搜索页则庞大复杂,近90%为交互式元素,包括过滤器、预约模态框等。项目的核心目标是将两者在移动端的 INP 从大约250毫秒降低至绿色标准(主页降低至185毫秒,搜索页减少至175毫秒)。团队通过深入数据分析,验证并调整优化策略,发现性能提升潜力巨大,且能带来显著经济效益。

团队围绕两个核心假设展开工作:一是减少 React 水合(hydration)过程,缩短页面准备和响应时间,二是提升自有 JavaScript 和 React 代码的执行效率。React 水合是将服务器返回的静态 HTML 转换为完全可交互的客户端应用的过程,尽管 React 18 已对这一阶段进行优化,水合仍可能引入延迟,影响首批交互响应,尤其在低端设备上表现明显。通过性能分析和本地调试,Preply 发现水合平均耗时约120毫秒,虽非最大瓶颈,但会加重首轮交互的 INP 值。故部分尝试包括主页迁移至 Next.js App Router,尽管整体提升有限,但积累了开发经验,为未来计划打下基础。 在数据采集层面,Preply 倚重多个工具和平台,包括谷歌 Chrome 团队提供的 web-vitals 库、Next.js 自定义指标(尤其是水合和渲染时长)、Snowflake 数据仓库供全员查询,以及流行的用户行为分析工具 Hotjar。通过交叉分析,被标示为高 INP 罪魁祸首的 DOM 元素和具体交互得到了确认。

此外,借助 Chrome 开发者工具的性能记录功能,团队能够精准定位造成性能瓶颈的事件监听器或组件渲染。大量实时数据揭秘了用户设备普遍低性能的现状,尤其是移动端使用的老旧安卓手机,这对 INP 优化提出了更高要求。 具体的技术优化措施涵盖面广泛且精细。首先,React 18 升级带来的水合架构改进即为明显推动力,升级后搜索页面 INP 从约460毫秒骤降到330毫秒左右,说明底层框架优化助力巨大。但独立于框架升级,Preply 团队针对应用结构和代码细节展开多角度改良。长度达 300 个条目的“辅导员出生国家”列表通过引入 React Virtuoso 实现虚拟化,减少 DOM 承载压力和渲染负荷,降低了约40毫秒的 INP。

多输入框中引入防抖处理,尤其是主学习科目字段,极大缩短了用户输入时的响应迟滞,最高改善达600多毫秒。 针对页面上非静态组件过度重新渲染问题,团队对“两大重量级静态组件”应用了 memoization,有效避免无谓重绘,整体 INP 降低约30毫秒。而隐私条则通过调整状态管理,让复杂逻辑局部化,阻止页面层级不必要的重新渲染,带来约15毫秒优化。不仅如此,团队排查到首次互动性能异常的根因是非交互元素绑定了大量 touchstart 事件,进而触发额外渲染影响交互响应。对 Radix UI Tooltip 组件的状态逻辑进行了 TypeScript 类型优化,消除了布尔值可能为 undefined 导致的无效渲染,整体 INP 改善约10毫秒。 对于欧盟用户使用的 Usercentrics 隐私条,升级到第三版减少了额外运行的繁重 JavaScript,显著改善了主页(约40毫秒)、搜索页(约5毫秒)的交互响应速度。

项目后期甚至再次回访已经优化的环节,采取更仿真低端设备的 20 倍 CPU 降速环境进行测试,找出能进一步压榨性能瓶颈的细节,体现了团队对优化“极致”追求的专业态度。 另一值得关注的是,团队在多次尝试中发现某些流行技术并未带来预期收益,例如 React 的 useDeferredValue 在当前应用场景未能提升 INP,部分因其优化对象偏重 React 渲染阶段而非 DOM 更新阶段。设计系统组件的重构优化虽为工程质量兜底,但针对 INP 并未带来立竿见影效果。清理大规模遗留代码的行为同样未直接改善响应时间,但从长远和维护成本角度看仍十分必要。针对聊天模块的临时延迟执行尝试也未达到预期,印证了所有优化均需建立在充分数据分析和场景理解之上。 部分方案如使用 Partytown 将第三方脚本转移至 Web Worker,因现有大量通过 Google Tag Manager 加载的脚本相互依赖和添加动态执行代码,存在极高风险及复杂性,最终团队选择放弃该方向。

React 新编译器的使用虽然备受关注,但因项目周期限制未能纳入本次优化范围。项目组对于用 await-interaction-response 等“巧妙”手段延迟执行重业务代码持谨慎态度,强调不应取巧掩盖底层设计问题。 从用户体验角度来看,经过多次模拟低配设备环境的测试,优化后的交互明显流畅。INP 统计不仅验证了技术层面的改进,同时映射了真实用户感受,尤其中低端移动设备上的表现提升尤为重要。Preply 以数据驱动促成决策,建立了覆盖各产品线的 Web Vitals 监控体系,并将性能指标纳入实验和发布流程,逐步形成性能为先的开发文化。团队还计划持续开展技术分享和工作坊,普及 React 性能优化最佳实践,助力未来项目稳步推进。

该项目展示了大规模产品性能提升的挑战与对策。降低 React 水合开销、避免无效重渲染、合理虚拟化长列表、优化状态管理以及升级关键第三方组件都是关键手段。但最核心的成功要素是基于海量真实用户数据的深度分析和持续验证,避免盲目追随潮流框架与技术,精准锁定性能瓶颈。Preply 团队在此基础上进行反复实验、调整,在不到一个季度时间内达成了令人满意的成果。 展望未来,Preply 计划继续深化性能监控,将 Web Vitals 纳入更多产品指标体系,推动性能意识深入团队。同时探索 App Router 与 React Server Components 结合的新开发模式,虽然短期内迁移难度和资源投入较高,但潜力不容忽视。

整体上,持续的技术升级、代码精简和用户体验关怀将共同驱动平台性能不断提升,助力 Preply 保持行业竞争优势。 综上所述,Preply 在 Next.js 应用上的 INP 优化经验具有较高借鉴价值,尤其适用于拥有庞大代码基、复杂交互且尚未全面采用最新 React 特性的项目。通过科学的数据驱动方法,精准识别性能瓶颈,结合应用架构和代码层面的针对性优化,企业不仅能显著提升用户体验,还能带来切实的商业价值。随着 Web Vitals 指标体系的推广和移动设备性能的差异化,未来性能优化的任务与挑战将持续存在,唯有依赖切实有效的工程实践,方能实现用户、技术与业务的三赢。

加密货币交易所的自动交易 以最优惠的价格买卖您的加密货币 Privatejetfinder.com

下一步
Race Through Wikipedia Game
2025年10月12号 23点05分52秒 探索WikiRun:挑战知识极限的维基百科极速竞赛

深入了解WikiRun这款融合了知识与速度的维基百科竞赛游戏,探索其玩法特色、策略技巧以及如何借助这款游戏提升知识储备和思维反应能力。

Show HN: Do pushups to use your phone
2025年10月12号 23点06分42秒 用俯卧撑解锁手机:创新健身与数字生活的完美结合

探索一种结合运动与智能科技的新方式,通过完成俯卧撑解锁手机应用,改变了我们使用手机的习惯,促进健康生活与数字自律的双重提升。

Architect's Guide to Micro-Front Ends: Module Federation with React and Angular
2025年10月12号 23点07分43秒 微前端架构师指南:深入解析React与Angular的模块联邦技术

随着现代企业应用的复杂度不断提升,微前端架构逐渐成为解决前端单体应用瓶颈的重要方案。本文详细探讨了微前端架构的设计理念、实现策略,重点围绕Webpack 5引入的模块联邦(Module Federation)技术,结合React与Angular框架,解析如何实现独立部署、团队自治和技术栈多样化的用户界面组合方式,帮助架构师构建灵活且可维护的大规模前端系统。

MetaPlanet Targets Digital Bank Buyout in Bitcoin Strategy Phase 2
2025年10月12号 23点08分56秒 MetaPlanet推动数字银行收购 掀起比特币战略第二阶段革新浪潮

随着区块链技术与传统金融的深度融合,MetaPlanet通过收购Bitcoin Digital Bank迈出了关键一步,开启了比特币战略的第二阶段,助力数字货币迈向主流。本文深入分析MetaPlanet此次收购的战略意义、对行业的影响及未来展望。

Elon Musk's X to clamp down on parody accounts - BBC
2025年10月12号 23点10分12秒 埃隆·马斯克的X平台加强打击仿冒账号,保护用户体验新举措

随着社交媒体的不断发展,平台上的仿冒账号层出不穷,给用户带来混淆和安全风险。针对这一问题,埃隆·马斯克旗下的X平台宣布将推行更严格的监管措施,规范仿冒和恶搞账号,提升整体使用环境的透明度和安全性。

Analysing Roman itineraries using GIS tooling
2025年10月12号 23点11分13秒 利用GIS技术解析古罗马道路——解密帝国道路网的空间奥秘

通过地理信息系统(GIS)技术,对古罗马公路网络进行多维度空间分析,揭示古代帝国交通路线的规划智慧与地形适应策略,为理解罗马文明提供全新视角。本文探讨了基于GIS的最优路径分析、地形坡度与水文因素的结合运用,以及历史文献与考古证据的协同验证,推动古代道路研究迈向高精度、多学科融合的新阶段。

Integrated photonic source of Gottesman–Kitaev–Preskill qubits
2025年10月12号 23点12分22秒 集成光子源:实现高效Gottesman–Kitaev–Preskill量子比特的未来之路

Gottesman–Kitaev–Preskill(GKP)量子比特通过将量子信息编码在光学模式的格点状态中,为量子计算提供了强大的容错能力。随着集成光子技术的突破,基于硅氮化物芯片的GKP量子比特生成正迈入实用化阶段,开启了光子量子计算网络大规模扩展的新篇章。