我的测试计划:
Test Plan
+ User Defined Variables
++ Thread Group
+++ HTTP Cache Manager
+++ Transaction Controller
++++ Request 1
+++ Transaction Controller
++++ Request 2
运行测试后,我可以在查看表中的结果,两个请求的传输字节相同。 HTTP缓存管理器的功能是无效的这种行为? 下面是显示我的HTTP请求的图像,请注意传输的字节与所有请求相同。
真实的测试计划:
答案 0 :(得分:1)
缓存管理器在documentation中列出了许多条件,因此请务必查看它们:
你有" 3"组的事实是正常的:
每个虚拟用户线程都有自己的缓存。
因此每个请求将执行3次,每个用户将拥有自己的缓存
每个网址。因此,如果对于项目1.1,2.1,3.1和4.1 URL略有不同,则每个URL都将被缓存。在这种情况下,只有在循环相同的请求或下一次迭代时,才会看到缓存正在运行。
缓存管理器决策基于帮助中定义的特定算法。如果您的请求偏离该算法,则他们不会缓存:
如果样本成功(即响应代码为2xx),则会为URL保存Last-Modified和Etag(如果相关,则为Expired)值。在执行下一个样本之前,采样器会检查缓存中是否有条目,如果是,则为请求设置If-Last-Modified和If-None-Match条件标头。
最后有一些影响缓存的标题,例如:
如果Cache-Control标头是" no-cache",响应将作为预过期存储在缓存中,因此将生成条件GET请求
或
不会缓存带有Vary标头的响应。
答案 1 :(得分:0)
我通常将缓存管理器和cookie管理器放在最高级别。 还要检查是否请求“每次迭代时清除缓存”标志。 这取决于应用程序要求(每次返回用户或新用户)。
是的,大部分时间只缓存静态项目(css,.js,images),而html页面通常是生成的,无法缓存。