performance api 通过监听 long task 和 navigation/resource timing 捕获前端异步卡顿与延迟,结合 performance.mark/measure 打点测时,触发降级;阈值建议设为后端软超时的1/10~1/6(如6–10s),并透传 x-client-timeout 协同中断。

Performance API 本身不直接监控后端异步任务,但它能精准捕获前端发起异步请求后的**执行卡顿、响应延迟与渲染阻塞**,从而间接反映任务是否超时或失速。结合前端业务逻辑,可构建“检测→判定→降级”的闭环机制。
识别异步操作中的长任务与响应延迟
异步卡顿常表现为 JS 执行过久(Long Task)或网络响应超时(Navigation/Resource Timing)。需同时监听两类指标:
- Long Task API:捕获执行 >50ms 的同步脚本块(如解析大 JSON、未优化的自定义节点回调处理)
-
Navigation & Resource Timing:通过
performance.getEntriesByType('navigation')或'resource'获取 fetch/XHR 的duration、responseEnd - requestStart,判断是否超出预期阈值(如 8s)
用 PerformanceObserver 实时监听并触发降级逻辑
不依赖定时轮询,而是用观察者模式主动响应异常:
- 注册
longtask观察器,当发现某次工作流节点渲染前的 JS 处理耗时 ≥200ms,立即标记“前端处理卡顿” - 对关键异步请求(如调用 Dify 自定义节点),在发起前打点:
performance.mark('api-start');收到响应后打点performance.mark('api-end'),再用performance.measure()计算实际耗时 - 若测量值 > 预设阈值(如 6s),且尚未收到成功响应,则自动切换为降级方案(如展示缓存结果、静态占位图、简化版文案)
与后端超时策略协同,避免重复降级
前端降级不是孤立动作,需与服务端超时配置对齐:
- 参考 Dify 默认 HTTP 超时(60s)、Celery
task_soft_time_limit=3600,前端建议将降级阈值设为后端软超时的 1/10~1/6(如 6–10s),早于服务端中断前干预 - 在请求头中透传
X-Client-Timeout: 8000,让后端(如 FastAPI 中间件)感知前端容忍上限,必要时提前返回轻量 fallback 响应 - 避免前端降级后用户仍持续重试——可配合
AbortSignal.timeout(8000)主动中止 fetch,防止堆积无效请求
Vue/React 场景下的简易降级封装示例
以 Vue 组合式 API 为例,在调用异步节点时统一包装:
- 发起请求前:
performance.mark(`node-${id}-start`) - 成功回调中:
performance.mark(`node-${id}-end`)+measure记录真实耗时 - 失败或超时时(含
AbortError或手动计时器触发),清空 loading 状态,启用预置 fallback 内容,并上报performance.measure('node-fallback', `node-${id}-start`)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











