为了达到真正意义的并发,让每个线程模拟一个全新的用户,就要清除JMeter中的缓存或确保请求不被缓存,就需要添加配置元件来禁用缓存 在 JMeter 中,HTTP 缓存管理器(HTTP Cache Manager)是一个非常实用的配置元件,用于模拟浏览器的缓存行为。当进行性能测试时,理解和管理资源的缓存行为对于评估应用程序性能至关重要。HTTP 缓存管理器允许你控制 JMeter 如何处理 HTTP 请求的缓存效果,从而更真实地模拟用户的行为。 ### HTTP 缓存管理器的作用 - **模拟浏览器缓存**:帮助 JMeter 模拟不同用户的浏览器缓存行为,包括对静态资源(如图片、CSS、JavaScript 文件等)的缓存管理。 - **减少对服务器的请求**:通过缓存已经请求过的资源,可以减少发送到服务器的请求数量,从而降低服务器的负载,并提高测试效率。 - **帮助性能测试**:在负载测试和性能测试中更真实地模拟用户行为,评估应用的性能和响应时间的变化。 ### HTTP 缓存管理器的使用 - 添加HTTP缓存管理器 右键点击线程组,选择 **添加** -> 配置元件**加粗文字** -> **HTTP 缓存管理器**。如下图: ![][1] - 配置HTTP缓存管理器 ![][2] - **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 ### 实际效果 通过使用以上方式,可以更真实地模拟用户在浏览网页时的行为。例如,在同一线程组中执行两次加载页面的请求,第一次请求会请求所有静态资源,第二次请求将减少静态资源的请求数量,因为它们将从缓存中获取。 [1]: https://view.leeoya.com/Uploads/Blog_Static/2025/05/3894446138.png [2]: https://view.leeoya.com/Uploads/Blog_Static/2025/05/3420488235.png Loading... <!--markdown-->为了达到真正意义的并发,让每个线程模拟一个全新的用户,就要清除JMeter中的缓存或确保请求不被缓存,就需要添加配置元件来禁用缓存 在 JMeter 中,HTTP 缓存管理器(HTTP Cache Manager)是一个非常实用的配置元件,用于模拟浏览器的缓存行为。当进行性能测试时,理解和管理资源的缓存行为对于评估应用程序性能至关重要。HTTP 缓存管理器允许你控制 JMeter 如何处理 HTTP 请求的缓存效果,从而更真实地模拟用户的行为。 ### HTTP 缓存管理器的作用 - **模拟浏览器缓存**:帮助 JMeter 模拟不同用户的浏览器缓存行为,包括对静态资源(如图片、CSS、JavaScript 文件等)的缓存管理。 - **减少对服务器的请求**:通过缓存已经请求过的资源,可以减少发送到服务器的请求数量,从而降低服务器的负载,并提高测试效率。 - **帮助性能测试**:在负载测试和性能测试中更真实地模拟用户行为,评估应用的性能和响应时间的变化。 ### HTTP 缓存管理器的使用 - 添加HTTP缓存管理器 右键点击线程组,选择 **添加** -> 配置元件**加粗文字** -> **HTTP 缓存管理器**。如下图: ![][1] - 配置HTTP缓存管理器 ![][2] - **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 ### 实际效果 通过使用以上方式,可以更真实地模拟用户在浏览网页时的行为。例如,在同一线程组中执行两次加载页面的请求,第一次请求会请求所有静态资源,第二次请求将减少静态资源的请求数量,因为它们将从缓存中获取。 [1]: https://view.leeoya.com/Uploads/Blog_Static/2025/05/3894446138.png [2]: https://view.leeoya.com/Uploads/Blog_Static/2025/05/3420488235.png 最后修改:2026 年 02 月 12 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏