相同API调用Axios速度远低于Postman,如何提升请求速度?
Axios请求速度远慢于Postman的优化方案
- 排查CORS预检请求耗时(仅浏览器端场景)
Postman不会遵守浏览器同源策略,不会自动发送OPTIONS预检请求,而浏览器端跨域请求如果包含自定义请求头、非简单请求类型等会先触发预检,额外增加耗时。可通过调整服务端CORS配置,设置Access-Control-Max-Age头缓存预检结果,减少预检请求发送频率。 - 对齐请求头配置
大部分「请求完全相同」的场景实际上存在请求头差异:- Postman默认携带
Accept-Encoding: gzip, deflate, br请求头开启响应压缩,Axios默认未配置会导致大响应体传输耗时增加 - Postman默认开启
Connection: keep-alive复用TCP连接,Axios默认未配置会导致每次请求重新建立TCP连接、重走TLS握手流程
参考配置如下:
import axios from 'axios' // 浏览器端基础配置 axios.defaults.headers.common['Accept-Encoding'] = 'gzip, deflate, br' // Node.js端额外配置连接复用 const http = require('http') const https = require('https') const axiosInstance = axios.create({ httpAgent: new http.Agent({ keepAlive: true }), httpsAgent: new https.Agent({ keepAlive: true }), timeout: 10000 }) - Postman默认携带
- 优化DNS解析缓存
Postman会自动缓存DNS解析结果,Axios默认每次请求都会重新做DNS解析。Node.js环境可引入dnscache模块做DNS解析结果缓存,进一步降低重复解析耗时。 - 优化请求/响应序列化逻辑
检查是否配置了低效率的transformRequest/transformResponse逻辑,POST请求可提前对请求体做JSON.stringify()序列化,避免Axios内部做冗余的类型判断;大响应体场景可配置responseType: 'stream'/responseType: 'arraybuffer'跳过默认的JSON自动解析,按需处理响应内容。 - 清理冗余拦截器逻辑
全局请求/响应拦截器中如果存在多余的加解密、日志打印、参数校验逻辑,会额外增加请求耗时。可临时注释所有拦截器测试耗时,再逐步优化冗余逻辑。 - 排查SSL证书校验耗时(仅Node.js端场景)
测试环境可临时在httpsAgent配置中添加rejectUnauthorized: false(生产环境禁止使用)验证是否为证书校验耗时过长,生产环境可提前加载信任根证书,减少证书校验耗时。
内容的提问来源于stack exchange,提问作者PRASANTH BATTULA
相关产品推荐
相关产品推荐

