ASP.NET 和输出缓存 - 如何查看它是不是正常工作?

     2023-03-07     120

关键词:

【中文标题】ASP.NET 和输出缓存 - 如何查看它是不是正常工作?【英文标题】:ASP.NET and the Output Cache - how can see if it's working?ASP.NET 和输出缓存 - 如何查看它是否正常工作? 【发布时间】:2009-10-04 11:50:25 【问题描述】:

问题:我有一个 ASP.NET 网站,但我认为我的代码无法正确获取 OutputCached。我正在使用 IIS7 性能计数器来显示命中或未命中。


我有一个简单的 ASP.NET MVC 网站。我正在使用内置的 ASP.NET 输出缓存魔法。

这是一些示例代码:-

[AcceptVerbs(HttpVerbs.Get)]
[ApiAuthorize]  // <-- this checks the querystring for a "key=1234". 
                // Doesn't find it, then it throws a 401 NOT AUTH exception.
[OutputCache(CacheProfile = "HomeController_Foo")]
public ActionResult Foo(string name, byte? alpha, byte? beta)


所以这意味着每个 url 查询可以如下所示:-

http://www.mydomain.com/Foo?name=hello+word&key=1234 http://www.mydomain.com/Foo?name=hello+word&alpha=1&key=1234 http://www.mydomain.com/Foo?name=hello+word&alpha=1&beta=2&key=1234

现在,请注意我是如何让 OutputCache 引用配置文件的?在这里……

<caching>
    <outputCacheSettings>
        <outputCacheProfiles>
            <add name="HomeController_Foo" duration="3600" varyByParam="key;name;alpha;beta"/>
        </outputCacheProfiles>
    </outputCacheSettings>
</caching>

没什么太难的……

所以这是踢球者!当我通过使用 IIS7 性能计数器确认发生这种情况时,它表示 输出缓存未命中/秒是我每秒发出的请求的 100%。输出缓存命中率为 0/秒。

我正在使用第 3 方网络负载压力测试程序来向我的网站发送查询。现在,源数据是什么?名单。程序不断循环遍历所有名称,然后返回开始,重复冲洗。因此,必须至少调用一次相同的查询字符串。 IIS 日志文件证实了这一点。

我没有为 alpha 或 beta 传递任何数据。

这是我正在点击的查询字符串....

http://www.mydomain.com/Foo?name=hello+word&key=1234

...我一直用数据源文件中的名称替换“hello+world”,IIS 日志证实了这一点。

那么 .. 我看错了性能计数器吗?是否有任何其他技巧可以查看它是否正在输出缓存?代码非常快,所以很难判断这是否是缓存结果。

【问题讨论】:

【参考方案1】:

可能为时已晚,但要帮助其他人:如果您的响应标头中有 cookie,那将阻止它被缓存。 outputcache (http) 模块有很多静默检查以确保响应被缓存。通过反射查看它可能会让任何人都无法放入缓存。

【讨论】:

不错的收获,为我节省了一些时间。谢谢【参考方案2】:

使用 firebug 之类的工具查看请求的响应。您将能够通过 200 或 304 判断是否使用了缓存响应 (304) 或是否发送了成功的响应 (200)。

【讨论】:

我知道我可以使用 firebug,但我认为我提到的性能计数器可能适用并报告命中/未命中?是不是?

如何使 ASP.NET MVC 输出缓存的部分“无效”?

】如何使ASP.NETMVC输出缓存的部分“无效”?【英文标题】:Howto"invalidate"portionsofASP.NETMVCoutputcache?【发布时间】:2009-08-1715:00:21【问题描述】:有没有办法以编程方式使部分ASP.NETMVC输出缓存无效?我想做的是,如果用户... 查看详情

ASP.NET MVC 视图和控制器输出缓存

】ASP.NETMVC视图和控制器输出缓存【英文标题】:ASP.NETMVCViewandControllerOutputCaching【发布时间】:2010-10-2509:50:03【问题描述】:使用输出缓存有什么区别在视图中:<%@PageLanguage="C#"Inherits="System.Web.Mvc.ViewPage<Mahmure.WebUI.ViewModels.New... 查看详情

如何确定 ASP.Net 缓存的总大小?

】如何确定ASP.Net缓存的总大小?【英文标题】:HowtodeterminetotalsizeofASP.Netcache?【发布时间】:2010-09-2513:04:39【问题描述】:我在一个Web项目中使用ASP.net缓存,我正在为它编写一个“状态”页面,它显示缓存中的项目,以及我能... 查看详情

ASP.NET 输出缓存在 IIS7.5 上不起作用

】ASP.NET输出缓存在IIS7.5上不起作用【英文标题】:ASP.NETOutputCachenotworkingonIIS7.5【发布时间】:2011-10-2706:10:42【问题描述】:我正在为我的ASP.NET3.5网站上的页面使用输出缓存功能,它在我的本地计算机(WinXP/IIS5.1)上运行良好,但... 查看详情

ASP.NET Identity 的默认密码哈希器 - 它是如何工作的,它是不是安全?

】ASP.NETIdentity的默认密码哈希器-它是如何工作的,它是不是安全?【英文标题】:ASP.NETIdentity\'sdefaultPasswordHasher-Howdoesitworkandisitsecure?ASP.NETIdentity的默认密码哈希器-它是如何工作的,它是否安全?【发布时间】:2014-01-0411:52:33【... 查看详情

如何缓存将图像返回到asp.net mvc中的视图的操作方法的输出?

】如何缓存将图像返回到asp.netmvc中的视图的操作方法的输出?【英文标题】:Howtocacheoutputofactionmethodthatreturnsimagetotheviewinasp.netmvc?【发布时间】:2013-02-0809:27:48【问题描述】:我已经阅读了很多关于缓存的帖子,但没有一篇真正... 查看详情

如何测量 .NET 内存缓存 4.0 的当前大小?

】如何测量.NET内存缓存4.0的当前大小?【英文标题】:Howtomeasurecurrentsizeof.NETMemoryCache4.0?【发布时间】:2014-03-1322:49:00【问题描述】:目前我们正在使用.NETMemoryCache4.0来满足缓存要求。(不是ASP.NET缓存,不是任何外部缓存)查... 查看详情

如何清除文本框的缓存??asp.net

...文本框架里都会自动显示出前几次输的值,如何去掉这个缓存?asp:textbox和inputtype="text"如何解决呢!------------------我不是说这个意思,我是说我在做项目的时候用到智能匹配..在匹配的过程中,发现除了弹出我写的层外,文本框里... 查看详情

.net带有参数的页面怎么进行缓存,缓存后可浏览正确页面

ASP.NET提供三种主要形式的缓存:页面缓存、用户控件输出缓存和缓存API。页面输出缓存作为最简单的缓存形式,将已经生成的动/静太页面全部内容保存在服务器内容中。当再有请求时,系统将缓存中的相关数据直接输出,直到... 查看详情

在 ASP.NET 中清除页面缓存

...:2008-08-1419:39:32【问题描述】:对于我的博客,我想使用输出缓存将特定帖子的缓存版本保存大约10分钟,这很好......<%@OutputCacheDuration="600"VaryByParam="*"%>但是,如果有人发表评论,我想清除缓存,以便刷新页面并看到评论。... 查看详情

如何正确 URL 重写图像? C# ASP.NET

...效。Firefox显示了img,但表示长度为0(我认为它只在我的缓存中有效 查看详情

如何清除asp.net中的服务器缓存?

】如何清除asp.net中的服务器缓存?【英文标题】:HowdoIcleartheservercacheinasp.net?【发布时间】:2013-05-0801:59:12【问题描述】:我发现有两种缓存。有浏览器缓存和服务器缓存。我已经进行了一些搜索,但我还没有找到使用asp.net(... 查看详情

我的 ASP.NET 缓存是不是存储在服务器或浏览器上

】我的ASP.NET缓存是不是存储在服务器或浏览器上【英文标题】:DoesmyASP.NETcachestoreonserverorbrowser我的ASP.NET缓存是否存储在服务器或浏览器上【发布时间】:2012-03-2600:45:41【问题描述】:在ASP.NET中,如果我使用:$<%@OutputCacheDurat... 查看详情

简单的 C# ASP.NET 缓存实现

】简单的C#ASP.NET缓存实现【英文标题】:SimpleC#ASP.NETCacheImplementation【发布时间】:2011-01-2807:54:13【问题描述】:我需要建立一个List&lt;object&gt;并缓存列表并能够附加到它。我还需要能够轻松地将其吹走并重新创建它。有什... 查看详情

我是不是需要在 ASP.NET Core 中调用 AddMemoryCache 才能使缓存工作?

】我是不是需要在ASP.NETCore中调用AddMemoryCache才能使缓存工作?【英文标题】:DoINeedtoCallAddMemoryCacheinASP.NETCoreforCachetowork?我是否需要在ASP.NETCore中调用AddMemoryCache才能使缓存工作?【发布时间】:2017-06-1206:24:19【问题描述】:在最... 查看详情

ASP.NET 缓存

】ASP.NET缓存【英文标题】:ASP.NETCaching【发布时间】:2010-09-0521:13:47【问题描述】:最近我一直在研究ASP.NET中缓存的可能性。我滚动了自己的“缓存”,因为我不知道更好,它看起来有点像这样:publicclassDataManagerprivatestaticDataMa... 查看详情

ASP.NET MVC 和 MemoryCache - 我如何使用它?

】ASP.NETMVC和MemoryCache-我如何使用它?【英文标题】:ASP.NETMVCandMemoryCache-howdoiuseit?【发布时间】:2013-01-3116:22:18【问题描述】:我的Application_Start中有这个:varcrumbsCache=newMemoryCache("breadCrumbsNames");varcrumbsList=newList<CacheItem>/ 查看详情

如何在新选项卡或窗口中打开 PDF 文件而不是下载它(使用 asp.net)?

】如何在新选项卡或窗口中打开PDF文件而不是下载它(使用asp.net)?【英文标题】:HowtoopenPDFfileinanewtaborwindowinsteadofdownloadingit(usingasp.net)?【发布时间】:2012-01-0719:21:39【问题描述】:这是下载文件的代码。System.IO.FileStreamfs=newSy... 查看详情