JMeter赢得';启用缓存时,不跟踪重定向

JMeter赢得';启用缓存时,不跟踪重定向,jmeter,cache-control,http-redirect,Jmeter,Cache Control,Http Redirect,我在JMeter上遇到了一个奇怪的问题,几乎像是一个bug。我正在运行版本5.1.1 r1855137 我有一个标准的HTTP请求采样器和一个HTTP缓存管理器。HTTP请求设置为跟随重定向。它还设置为使用KeepAlive,并通过最多6次并行下载下载所有嵌入式资源。缓存管理器设置为清除每次迭代的缓存,并使用缓存控制/Expires头。缓存中设置了5000个元素的限制 我已经创建了一个线程组,其中包含一个循环控制器。HTTP请求采样器位于该线程组和循环内。初始请求中的页面返回找到的HTTP/1.

我在JMeter上遇到了一个奇怪的问题,几乎像是一个bug。我正在运行版本5.1.1 r1855137

我有一个标准的
HTTP请求采样器
和一个
HTTP缓存管理器
。HTTP请求设置为
跟随重定向
。它还设置为
使用KeepAlive
,并通过最多6次并行下载下载所有嵌入式资源。缓存管理器设置为
清除每次迭代的缓存
,并使用
缓存控制/Expires头
。缓存中设置了5000个元素的限制

我已经创建了一个线程组,其中包含一个循环控制器。HTTP请求采样器位于该线程组和循环内。初始请求中的页面返回找到的
HTTP/1.1 302
。我还注意到在标题中有
缓存控制:private,s-maxage=0
。第一次通过循环时,JMeter遵循重定向并下载所有资源。随后的断言很好。第二次到,JMeter只发送初始页面的请求,然后不遵循重定向。以下断言失败,因为缺少我希望在子请求中找到的对象

我知道这是一个缓存问题,因为如果我删除线程组中的循环控制器,而是使线程组循环,那么如果我保留在缓存管理器上选中的“Clear cache each iteration”(清除每次迭代的缓存)选项,问题就会消失。如果禁用此选项,线程组循环时也会出现同样的问题


有人知道为什么当缓存管理器处于活动状态时JMeter不遵循302重定向吗?网站是否未遵循适当的协议,提供了一个缓存控制头
private,s-maxage=0

查看JMeter源代码,JMeter缓存2xx和304s。并获取请求。见:


所以它不应该缓存你的302。您是否尝试过使用“自动重定向”选项查看其是否正确:

我将查看源代码。我可以通过关闭“使用缓存控制/Expires头”选项来解决这个问题。我不确定这会有什么影响,但它解决了这个问题,所以这肯定是一个缓存问题。我没有尝试过自动重定向选项,因为如果我这样做的话,我将无法在我需要的样本上使用后处理器。谢谢你的回复。