启用Cache Manager时JMeter未执行无嵌入资源HTTP请求及缓存疑问
问题解答
问题1:启用Cache Manager后第二个请求被跳过是否属于预期行为?
这是预期行为,原因如下:
- JMeter的Cache Manager并非只管理图片、JS、CSS这类嵌入资源,它是完整模拟浏览器的HTTP缓存机制,会对所有HTTP请求(包括主请求)的缓存状态进行管理。
- 当第一个请求(开启嵌入资源获取)执行完成后,主URL的响应已经被存入缓存。第二个请求和第一个请求指向同一URL,JMeter检查缓存后发现该URL已有有效缓存条目,就会直接复用缓存内容,不再发送实际的HTTP请求,所以结果树中会显示该请求被跳过。
- 禁用Cache Manager后,JMeter不会复用任何缓存,所以两个请求都会被实际执行。
问题2:如何让Cache Manager对多用户生效?
默认情况下,JMeter的Cache Manager是每个线程(用户)独立维护自己的缓存空间,所以第二个用户的第一次请求仍会调用嵌入资源。要实现多用户共享缓存,需要调整以下设置:
- 选中Cache Manager,在「高级」设置里将**共享模式(Share mode)**改为「All threads」(所有线程共享)。这样所有用户会共用同一个缓存池,第一个用户缓存的资源,第二个用户可以直接复用。
- 确保目标服务器返回的响应头包含正确的缓存控制字段(如
Cache-Control、Expires),或者在Cache Manager中勾选「Use Cache-Control/Expires headers」选项,让JMeter能正确识别缓存的有效期,避免不必要的资源重复请求。
内容的提问来源于stack exchange,提问作者Swarup
相关产品推荐
相关产品推荐

