【发布时间】:2020-04-27 07:05:07
【问题描述】:
我有一个 jmeter 脚本,我需要在其中多次打开一个页面。因此,我将此操作保留在循环控制器下。我观察到的是每次迭代加载页面的响应时间都在减少。这可能是由于缓存。任何人都可以帮助我如何在每次迭代后清除此采样器的缓存(我指的是循环控制器迭代,而不是线程组一)。
【问题讨论】:
标签: jmeter
我有一个 jmeter 脚本,我需要在其中多次打开一个页面。因此,我将此操作保留在循环控制器下。我观察到的是每次迭代加载页面的响应时间都在减少。这可能是由于缓存。任何人都可以帮助我如何在每次迭代后清除此采样器的缓存(我指的是循环控制器迭代,而不是线程组一)。
【问题讨论】:
标签: jmeter
您的要求并没有多大意义,因为 well-behaved JMeter test should represent a real user using a real browser 和真正的浏览器 caching strategy 假设通过遵守 Cache-Control 标头来最小化下载资产的数量
如果您知道这种良好做法,但仍想丢弃每次迭代的缓存:
将以下代码放入“脚本”区域:
sampler.getCacheManager().clear()
【讨论】:
您可以在 JMeter 中使用 HTTP 缓存管理器并选中此复选框以每次迭代清除缓存?。您可以关注page 了解更多信息。这适用于当前线程中的所有请求。我知道这不是你要找的,但 JMeter 只有这个选项作为 UI 设置。
另一种方法可以是使用Beanshell PreProcessor来拦截请求并在运行时清除缓存。
import org.apache.jmeter.protocol.http.control.CacheManager;
CacheManager clearCache = ctx.getCurrentSampler().getProperty("HTTPSampler.cache_manager").getObjectValue();
clearCache.clear();
【讨论】: