3

运行负载测试后,在结果数据中,它显示缓存的请求在整个测试期间不断累积,并随着时间的推移而增加。

在我的网络测试中,每个 URL 都关闭了缓存控制设置,这应该意味着不缓存。

此外,在我的负载测试场景设置中,我将“新用户百分比”设置设置为 100,这意味着每个用户都应该被视为新用户,而不是使用缓存。

有了这些设置,为什么在整个负载测试过程中,测试结果仍然显示缓存请求的数量不断增加?

我附上了缓存请求的负载测试结果图的图像以进行澄清。

缓存请求的负载测试结果图

4

2 回答 2

5

如您所知,每个请求都有一个名为“Cache Control”的属性。当 Web 测试中请求的 Cache Control 属性为 false 时,始终发出请求。当 Cache Control 属性为 true 时,VSTS 负载测试运行时代码会尝试模拟浏览器缓存行为。

但是,对于所有相关请求(图像、样式表、javascript...),缓存控制属性会自动设置为 true。

在负载测试中,为负载测试中运行的每个用户分别模拟浏览器缓存行为。但是如果“新用户百分比”设置为 100,则缓存将在虚拟用户会话期间使用。如果您的 Web 测试包含许多页面,则将使用缓存。

从 VSTS 2008 开始,您现在可以编写一个 WebTestPlugin 来禁用所有相关请求的缓存。

注意:当单独运行 Web 测试时,所有相关请求的 Cache Control 属性自动设置为 false,因此它们总是被获取:这允许您在浏览器中查看 html 页面。

于 2012-10-02T07:40:55.100 回答
0

感谢这个博客,我创建了以下课程。

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;
            }
        }
    }
}

然后说明显示如何安装插件。

  1. 构建应用程序
  2. 打开 WebTest 文件
  3. 在图标中单击“添加 Web 测试插件”
  4. 将“启用浏览器缓存”属性设置为 false
于 2018-09-25T15:19:24.850 回答