运行负载测试后,在结果数据中,它显示缓存的请求在整个测试期间不断累积,并随着时间的推移而增加。
在我的网络测试中,每个 URL 都关闭了缓存控制设置,这应该意味着不缓存。
此外,在我的负载测试场景设置中,我将“新用户百分比”设置设置为 100,这意味着每个用户都应该被视为新用户,而不是使用缓存。
有了这些设置,为什么在整个负载测试过程中,测试结果仍然显示缓存请求的数量不断增加?
我附上了缓存请求的负载测试结果图的图像以进行澄清。
运行负载测试后,在结果数据中,它显示缓存的请求在整个测试期间不断累积,并随着时间的推移而增加。
在我的网络测试中,每个 URL 都关闭了缓存控制设置,这应该意味着不缓存。
此外,在我的负载测试场景设置中,我将“新用户百分比”设置设置为 100,这意味着每个用户都应该被视为新用户,而不是使用缓存。
有了这些设置,为什么在整个负载测试过程中,测试结果仍然显示缓存请求的数量不断增加?
我附上了缓存请求的负载测试结果图的图像以进行澄清。
如您所知,每个请求都有一个名为“Cache Control”的属性。当 Web 测试中请求的 Cache Control 属性为 false 时,始终发出请求。当 Cache Control 属性为 true 时,VSTS 负载测试运行时代码会尝试模拟浏览器缓存行为。
但是,对于所有相关请求(图像、样式表、javascript...),缓存控制属性会自动设置为 true。
在负载测试中,为负载测试中运行的每个用户分别模拟浏览器缓存行为。但是如果“新用户百分比”设置为 100,则缓存将在虚拟用户会话期间使用。如果您的 Web 测试包含许多页面,则将使用缓存。
从 VSTS 2008 开始,您现在可以编写一个 WebTestPlugin 来禁用所有相关请求的缓存。
注意:当单独运行 Web 测试时,所有相关请求的 Cache Control 属性自动设置为 false,因此它们总是被获取:这允许您在浏览器中查看 html 页面。
感谢这个博客,我创建了以下课程。
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;
namespace QuranX.Web.LoadTest.WebTestPlugins
{
[DisplayName("Enable browser caching")]
public class EnableBrowserCachingPlugin : WebTestPlugin
{
[DisplayName("Allow caching")]
[Description("If True then server responses will be cached")]
public bool AllowCaching { get; set; } = true;
public override void PostRequest(object sender, PostRequestEventArgs e)
{
foreach (WebTestRequest dependentRequest in e.Request.DependentRequests)
{
dependentRequest.Cache = AllowCaching;
}
}
}
}
然后说明显示如何安装插件。