news 2026/7/5 16:12:46

把 quicklink 的预加载思想搬到 API 层:我设计了一套‘懒请求调度器’,首屏并发从 9 降到了 2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把 quicklink 的预加载思想搬到 API 层:我设计了一套‘懒请求调度器’,首屏并发从 9 降到了 2

背景

运营后台的仪表盘页面有 9 个图表组件,每个都要调后端 API。用户一进来,9 个请求同时发出,后端扛不住,前端首屏等最慢的那个 API(1.8s)。

常规方案是给每个图表加一个"进入视口再加载"。用 IntersectionObserver 实现,大概是每个组件里加一段:

const{ref,stop}=useIntersectionObserver(target,([{isIntersecting}])=>{if(isIntersecting){fetchData()stop()}})

改动量不大,但有个问题:每个图表都是"看到才开始加载",用户往下滚,每个图表依次出现 loading 态。视觉上很碎,体验不好。

我需要的是另一种策略:不是"看到再加载",而是“有可能被看到之前就预加载”——这就是 quicklink 的思路,只不过它预加载的是页面 URL,我需要预加载的是 API 数据。

整体设计

参考 quicklink 的调度层架构,我搭了三个模块:

┌───────────────────────────────────┐ │ useLazyPreload(intersectionOptions)│ │ 视口检测层:哪些图表马上要进入视口 │ └───────────┬───────────────────────┘ │ 返回候选列表 ┌───────────▼───────────────────────┐ │ useIdlePreloader(threshold) │ │ 调度层:等主线程空闲后批次执行 │ └───────────┬───────────────────────┘ │ 按批次调用 ┌───────────▼───────────────────────┐ │ prefetchApi(urls, concurrency) │ │ 执行层:控制并发、去重、缓存结果 │ └───────────────────────────────────┘

核心思路和 quicklink 完全一致:把"何时加载"和"如何加载"解耦。视口层只管"哪些该加载",调度层只管"什么时候执行",执行层只管"怎么加载、怎么去重"。

实现细节

第一层:视口预检测

quicklink 用IntersectionObserver检测<a>标签。我这层检测的是图表组件的容器 DOM,但不是"进入"视口才触发,而是"即将进入"视口就触发

functionuseLazyPreload(rootMargin='300px'){constpending=ref(newSet())constobserver=newIntersectionObserver((entries)=>{entries.forEach((entry)=>{
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 14:17:55

M4Markets:技术架构的路径复盘

‍在外汇行业语境里&#xff0c;表达越清晰、信息越透明&#xff0c;越容易建立稳定预期。在M4Markets的外汇服务中&#xff0c;从公开信息与使用体验出发&#xff0c;梳理其更值得肯定的能力点与细节表现。在外汇相关服务中&#xff0c;读者最在意的通常是信息是否清楚、提示是…

作者头像 李华
网站建设 2026/7/4 18:58:38

open harmony 项目实战:用 AppStorage 实现轻量级页面路由和状态管理

open harmony 项目实战&#xff1a;用 AppStorage 实现轻量级页面路由和状态管理 在 OpenHarmony 项目里&#xff0c;如果应用规模不是特别大&#xff0c;不一定一开始就要引入复杂路由方案。我的“语文视界”项目采用了一个更轻量的做法&#xff1a;用 AppStorage 记录当前页面…

作者头像 李华
网站建设 2026/7/5 8:29:09

open harmony 项目实战:用 ArkTS 实现诗词收藏和阅读历史

open harmony 项目实战&#xff1a;用 ArkTS 实现诗词收藏和阅读历史 收藏和阅读历史是学习类 App 中非常常见的功能。用户看到喜欢的诗词&#xff0c;希望可以收藏&#xff1b;读过的内容&#xff0c;也希望能在“我的”页面看到记录。 在“语文视界”项目中&#xff0c;我把这…

作者头像 李华
网站建设 2026/7/4 9:57:13

基于51/STM32单片机温湿度控制系统设计大棚检测成品恒温恒湿光照44(设计源文件+万字报告+讲解)(支持资料、图片参考_相

基于51/STM32单片机温湿度控制系统设计大棚检测成品恒温恒湿光照44(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相 温湿度检测和温湿度控制的区别&#xff1a;温湿度检测&#xff1a; 对当前环境的温湿度采集温湿度控制&#xff1a;温度高继电器1闭合开启加热片温…

作者头像 李华