为了达到真正意义的并发,让每个线程模拟一个全新的用户,就要清除JMeter中的缓存或确保请求不被缓存,就需要添加配置元件来禁用缓存
在 JMeter 中,HTTP 缓存管理器(HTTP Cache Manager)是一个非常实用的配置元件,用于模拟浏览器的缓存行为。当进行性能测试时,理解和管理资源的缓存行为对于评估应用程序性能至关重要。HTTP 缓存管理器允许你控制 JMeter 如何处理 HTTP 请求的缓存效果,从而更真实地模拟用户的行为。
HTTP 缓存管理器的作用
- 模拟浏览器缓存:帮助 JMeter 模拟不同用户的浏览器缓存行为,包括对静态资源(如图片、CSS、JavaScript 文件等)的缓存管理。
- 减少对服务器的请求:通过缓存已经请求过的资源,可以减少发送到服务器的请求数量,从而降低服务器的负载,并提高测试效率。
- 帮助性能测试:在负载测试和性能测试中更真实地模拟用户行为,评估应用的性能和响应时间的变化。
HTTP 缓存管理器的使用
- 添加HTTP缓存管理器
右键点击线程组,选择 添加 -> 配置元件加粗文字 -> HTTP 缓存管理器。如下图:
- 配置HTTP缓存管理器
- Clear Cache each Iteration:每次迭代后,清空缓存
- Use Thread Group configuration to control cache clearing:如果选择该项,使用线程组配置去控制缓存清空
- Use Cache-Control/Expires header when processing GET requests:如果选择了该选项,Jmeter将根据当前时间检查Cache-Control/Expires值。如果时间戳是将来的,并且请求是Get,那么Sampler会立即返回,而不需要从Server请求URL。
- Maximum Number of Elements in cache:Jmeter保存所有缓存资源在RAM。默认情况下,缓存管理器在每个虚拟用户的缓存中最多存储5000个条目。如果增加这个值,Jmeter将相应地消耗更多的内存。它会导致“OutOfMemory”异常。为了避免这种行为,可以在jmeter.bat\sh中调整JVM-Xmx选项。
设置 HTTP 头部来禁止缓存
除了以上方法,还可以在线程组中设置HTTP信息头管理器来设置一些参数:
- 在每个 HTTP 请求采样器中添加HTTP信息头管理器(HTTP Header Manager)。
添加以下头部字段:
- Cache-Control: no-cache 或 Cache-Control: no-store
- Pragma: no-cache
实际效果
通过使用以上方式,可以更真实地模拟用户在浏览网页时的行为。例如,在同一线程组中执行两次加载页面的请求,第一次请求会请求所有静态资源,第二次请求将减少静态资源的请求数量,因为它们将从缓存中获取。