HTTP缓存管理器不缓存请求内容

时间:2017-09-15 14:59:21

标签: jmeter jmeter-3.2

我的测试计划:

Test Plan
+ User Defined Variables
++ Thread Group
+++ HTTP Cache Manager
+++ Transaction Controller
++++ Request 1
+++ Transaction Controller
++++ Request 2

运行测试后,我可以在查看表中的结果,两个请求的传输字节相同。 HTTP缓存管理器的功能是无效的这种行为? 下面是显示我的HTTP请求的图像,请注意传输的字节与所有请求相同。 enter image description here

真实的测试计划:

enter image description here

2 个答案:

答案 0 :(得分:1)

缓存管理器在documentation中列出了许多条件,因此请务必查看它们:

  1. 你有" 3"组的事实是正常的:

      

    每个虚拟用户线程都有自己的缓存。

    因此每个请求将执行3次,每个用户将拥有自己的缓存

  2. 每个网址。因此,如果对于项目1.1,2.1,3.1和4.1 URL略有不同,则每个URL都将被缓存。在这种情况下,只有在循环相同的请求或下一次迭代时,才会看到缓存正在运行。

  3. 缓存管理器决策基于帮助中定义的特定算法。如果您的请求偏离该算法,则他们不会缓存:

      

    如果样本成功(即响应代码为2xx),则会为URL保存Last-Modified和Etag(如果相关,则为Expired)值。在执行下一个样本之前,采样器会检查缓存中是否有条目,如果是,则为请求设置If-Last-Modified和If-None-Match条件标头。

  4. 最后有一些影响缓存的标题,例如:

      

    如果Cache-Control标头是" no-cache",响应将作为预过期存储在缓存中,因此将生成条件GET请求

      

    不会缓存带有Vary标头的响应。

答案 1 :(得分:0)

我通常将缓存管理器和cookie管理器放在最高级别。 还要检查是否请求“每次迭代时清除缓存”标志。 这取决于应用程序要求(每次返回用户或新用户)。

是的,大部分时间只缓存静态项目(css,.js,images),而html页面通常是生成的,无法缓存。