#11207·axios

在保持原型边界的同时减少请求配置合并的开销

作者: ShikeChen01创建于 2026年9月6日更新于 2026年9月16日

`mergeConfig` 对 `axios(config)` 运行一次,对方法别名(如 `axios.post`) 运行两次。在当前的 `v1.x`(`b8d67bbbd6b381e1f4b1887e32686fcc89c5b0a8`) 中,它会在每次调用时重新构建无状态策略,在识别普通对象时执行重复的原型遍历,并在合并不区分大小写的标头时重复扫描累积的键。我已经准备了一个贡献,涵盖了这三个成本,其中包括对共享原型边界和不区分大小写的键处理的回归测试。在提交 PR 之前,本问题记录了范围,这是贡献模板中所要求的。所提议的更改保留了对 `__proto__`、`constructor` 和 `prototype` 这三个不安全名称的过滤,符号键的身份,首字母/最后值的标头行为,`skipUndefined` 和过渡性的 `validateStatus` 处理。在 PR 中将提到两个内部可观察对象:对状态性代理陷阱的调用减少,以及在模块初始化时捕获 `Object.prototype.hasOwnProperty`。在 Node 24.15.0 / Windows 11 / i5-12600KF 上保存的交替进程测量表明,通过不带 I/O 的适配器的典型请求从 36.2 微秒降至 31.5 微秒,而带有头部的情况从 259.6 微秒降至 186.3 微秒。单独的验证运行重现了方向和类似的幅度。这些是在共享机器负载下的本地 CPU 开销测量;它们不能预测网络延迟的改善。保存的完整单元运行报告通过了 1074 个测试;当前的预提交检查报告通过了 287 个测试,覆盖了八个相关套件,包括原型污染和配置合并测试。专注的 ESLint 也通过了测试。