JMeter录制同一请求多次,浏览器开发者工具仅显示单次请求
JMeter录制重复请求的原因及解决办法
可能原因
- 嵌入式资源重复捕获:开启「下载嵌入式资源」后,页面内静态资源(如图片、脚本)若存在重复引用,或JMeter未正确识别缓存状态,就会重复录制这类请求。浏览器开发者工具默认合并缓存命中的重复请求记录,而JMeter会如实记录所有经过代理的请求,包括浏览器隐去的缓存复用尝试。
- 缓存管理器配置偏差:HTTP Cache Manager若未勾选「Use Cache-Control/Expires headers」,或者缓存策略与浏览器不一致,JMeter不会复用已缓存资源,会重复发起请求。
- 并发下载线程干扰:设置6线程并发下载嵌入式资源时,网络延迟或资源加载依赖可能导致线程重复触发相同资源请求,进而被JMeter重复录制。
- 请求重试/预加载未被浏览器展示:部分页面会在资源加载失败时自动重试,或预加载资源,这类请求浏览器开发者工具可能不显示,但会经过JMeter代理被记录。
解决措施
- 调整嵌入式资源下载规则:
- 在HTTP Request Defaults中勾选「Do not download embedded resources again if they match a previous request」,避免重复下载相同资源。
- 通过「URL Patterns to Include/Exclude」过滤静态资源(如
*.jpg、*.css),仅录制核心业务请求。
- 优化缓存管理器设置:
- 勾选HTTP Cache Manager的「Use Cache-Control/Expires headers」,让JMeter遵循浏览器缓存规则复用资源。
- 确保Cache Manager作用域覆盖所有录制请求。
- 降低并发线程数:将嵌入式资源下载的并发线程数调低至1-2,观察是否仍出现重复录制。
- 对比请求细节排查差异:
- 开启JMeter「View Results Tree」,查看重复请求的
Cache-Control、If-None-Match等缓存相关头信息,与浏览器对应请求对比,确认是否为缓存处理差异导致。
- 开启JMeter「View Results Tree」,查看重复请求的
- 过滤重试类请求:若存在重试请求,可通过响应码、请求头特征(如
Retry-After)在JMeter中过滤掉这类重复记录。
内容的提问来源于stack exchange,提问作者Ajith R
相关产品推荐
相关产品推荐

