【debug】 solve and learning
下面是一份清晰、系统、可复用的 Markdown 笔记,总结你这次解决这个前后端性能问题的全过程。你可以直接复制保存。
🛠️ 前后端性能问题排查与解决方案总结
📌 背景问题
在前端渲染某个子组件时,需要调用一个后端 API getPartWorkingOn() 获取数据。但这个 API 查询复杂、执行时间达到 3 秒。
前端组件在 constructor 阶段调用 fetchWork(),导致:
- 页面渲染被阻塞
- 子组件内容迟迟不显示
- 用户操作体验明显变 差
🎯 核心问题分析
1. 后端 SQL 查询过慢
NestJS 服务中执行了两个重量级查找:
findOne()(最后一条)find()(全部 parts)
并且 relations 层级很深 → 多表 JOIN → 查询很慢。
2. 前端在 constructor 里触发数据加载
Angular 生命周期中:
constructor过早- 模板、Change Detection、Input 尚未准备好
- 异步数据返回会触发多次 Change Detection
- 导致页面在初始渲染阶段显得卡顿、白屏
🧠 解决思路
完整解决包含两部分: