响应拦截器可与Pinia配合实现全局接口耗时监控:请求前通过config.metadata存startTime,响应后计算差值并调用Pinia的recordApiDuration记录;需覆盖error分支、防重复记录,并支持聚合分析与阈值告警。

响应拦截器本身不直接统计耗时,但可以和 Pinia 配合实现全局接口耗时监控——核心思路是:请求发出前存时间戳,响应到达后算差值,再交由 Pinia 统一收集、聚合或上报。
在请求拦截器中记录发起时间
利用 config.metadata(Axios 原生支持的自定义字段)挂载当前时间,避免污染 headers 或影响后端逻辑:
- 在 request 拦截器里写:
config.metadata = { startTime: Date.now() } - 注意不要用
config.headers存时间戳,否则可能被后端拒绝或透传出去
在响应拦截器中计算并提交耗时数据
响应到达后读取 metadata 中的时间戳,与当前时间做差,再通过 Pinia action 记录:
从零开始编排 SpringBoot+Vue 全栈项目工作流,适用于新建全栈项目或完整脚手架请求,触发后依次调用 product‑spec‑builder(需求调研)等模块。
- 先从
response.config.metadata?.startTime取出发起时刻 - 用
Date.now() - startTime得到毫秒级耗时 - 调用 Pinia store 的
recordApiDuration(url, duration, status)方法存入数组或对象 - 可额外带上状态码(
response.status)、是否成功(response.data?.code === 0)等维度
用 Pinia 管理耗时数据并支持分析
定义一个 usePerfStore,提供基础聚合能力:
-
state 包含
durationList: { url: string; ms: number; ts: number; status: number }[] -
actions 提供
recordApiDuration、clear()、getAvgByUrl(url)、getSlowest(5)等方法 - 可选:超出阈值(如 >2s)自动触发 warning 日志或上报埋点
实际使用时注意边界情况
耗时统计要真实可靠,需覆盖异常路径:
- 响应拦截器的 error 分支 同样要读 metadata 并计算耗时(网络超时、连接拒绝等也算“响应”)
- 避免重复记录:确保每个请求只进一次
recordApiDuration,不因重试、取消而多记 - 开发环境开启、生产环境可关闭或采样上报,减少性能开销
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









