运行负载测试后,在结果数据中,它显示缓存的请求在整个测试期间累积,并随着时间的推移而增加。
在我的网络测试中,每个网址都关闭了“缓存控制”设置,这意味着不要缓存。
此外,在我的负载测试场景设置中,我将“新用户百分比”设置设置为100,这意味着每个用户都应被视为新用户,而不是使用缓存。
使用这些设置,为什么测试结果仍显示整个负载测试中缓存请求的数量增加?
我附上了缓存请求的负载测试结果图的图像以供澄清。
答案 0 :(得分:5)
如您所知,每个请求都有一个名为“Cache Control”的属性。 当Web测试中的请求的缓存控制属性为false时,始终发出请求。 当Cache Control属性为true时,VSTS加载测试运行时代码会尝试模拟浏览器缓存行为。
但是,对于所有相关请求(图像,样式表,javascripts,...),Cache Control属性自动设置为true。
在负载测试中,为负载测试中运行的每个用户单独模拟浏览器缓存行为。但是,如果“新用户百分比”设置为100,则将在虚拟用户会话期间使用缓存。如果您的Web测试包含许多页面,则将使用缓存。
从VSTS 2008开始,您现在可以编写一个WebTestPlugin来禁用所有相关请求的缓存。
注意: 当自行运行Web测试时,所有相关请求的Cache Control属性都会自动设置为false,因此始终会获取它们:这样您就可以在浏览器中查看html页面。
答案 1 :(得分:0)
感谢this blog,我创建了以下课程。
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;
}
}
}
}
说明然后说明如何安装插件。