0

我的测试计划:

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

运行测试后,我可以在表中查看结果,两个请求的传输字节相同。HTTP缓存管理器的功能是无效的吗?下面是显示我的 HTTP 请求的图像,请注意传输的字节对所有请求都是相同的。 在此处输入图像描述

实际测试计划:

在此处输入图像描述

4

2 回答 2

1

缓存管理器附带文档中列出的许多条件,因此请务必查看它们:

  1. 你有“3人一组”的事实是正常的:

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

    所以每个请求都会执行3次,每个用户都有自己的缓存

  2. 它是每个 URL。因此,如果项目 1.1、2.1、3.1 和 4.1 的 URL 稍有不同,每个项目都会被缓存。在这种情况下,只有在循环同一个请求或下一次迭代时,您才会看到缓存在起作用。

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

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

  4. 最后还有影响缓存的标头,例如:

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

    或者

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

于 2017-09-15T17:28:28.003 回答
0

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

是的,大多数时候只缓存静态项目(css、.js、图像),而通常会生成 html 页面并且无法缓存。

于 2017-09-16T07:51:40.067 回答