如何在 Visual Studio 负载测试中关闭请求缓存
Posted
技术标签:
【中文标题】如何在 Visual Studio 负载测试中关闭请求缓存【英文标题】:How can I turn off request caching in a Visual Studio load test 【发布时间】:2012-10-01 19:09:44 【问题描述】:运行负载测试后,在结果数据中,显示缓存请求在整个测试期间不断累积,并随着时间的推移而增加。
在我的网络测试中,每个 URL 都关闭了缓存控制设置,这应该意味着不缓存。
此外,在我的负载测试场景设置中,我将“新用户百分比”设置设置为 100,这意味着每个用户都应被视为新用户,而不是使用缓存。
有了这些设置,为什么在整个负载测试过程中,测试结果仍然显示缓存请求数量不断增加?
我附上了缓存请求的负载测试结果图的图像以供澄清。
【问题讨论】:
【参考方案1】:如您所知,每个请求都有一个名为“Cache Control”的属性。 当 Web 测试中请求的 Cache Control 属性为 false 时,始终发出请求。 当 Cache Control 属性为 true 时,VSTS 负载测试运行时代码会尝试模拟浏览器缓存行为。
但是,对于所有相关请求(图像、样式表、javascript...),缓存控制属性会自动设置为 true。
在负载测试中,针对负载测试中运行的每个用户分别模拟浏览器缓存行为。但是如果“新用户百分比”设置为 100,则在虚拟用户会话期间将使用缓存。如果您的 Web 测试包含许多页面,则将使用缓存。
从 VSTS 2008 开始,您现在可以编写一个 WebTestPlugin 来禁用所有相关请求的缓存。
注意:当单独运行 Web 测试时,所有相关请求的 Cache Control 属性会自动设置为 false,因此它们总是被获取:这允许您在浏览器中查看 html 页面。
【讨论】:
感谢分享。我找到了这篇文章,我认为它适用于 VSTS 2010 和 2012:blogs.msdn.com/b/billbar/archive/2007/01/22/… 感谢您的详细回答,Cybermaxs。 VSTS 代理是否支持 Expires http 标头?【参考方案2】:感谢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;
然后说明如何安装插件。
-
构建应用程序
打开 WebTest 文件
在图标中单击“添加 Web 测试插件”
将“启用浏览器缓存”属性设置为 false
【讨论】:
以上是关于如何在 Visual Studio 负载测试中关闭请求缓存的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 中关闭 App.config 文件自动排列格式
如何在 Visual Studio 2010 中关闭远程调试?
如何在 Visual Studio IDE 中关闭显示空白字符
在 Visual Studio 2015 中关闭 Browser Link