首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ASP.NET和输出缓存--如何查看它是否工作?

ASP.NET和输出缓存--如何查看它是否工作?
EN

Stack Overflow用户
提问于 2009-10-04 11:50:25
回答 2查看 4.5K关注 0票数 3

Problem:我有一个ASP.NET网站,我不相信我的代码得到了正确的OutputCached。我正在使用IIS7性能计数器来显示命中或错过一秒钟。

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

下面是一些示例代码:-

代码语言:javascript
运行
复制
[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查询可以如下所示:

现在,注意如何让OutputCache引用一个配置文件?在这里..。

代码语言:javascript
运行
复制
<caching>
    <outputCacheSettings>
        <outputCacheProfiles>
            <add name="HomeController_Foo" duration="3600" varyByParam="key;name;alpha;beta"/>
        </outputCacheProfiles>
    </outputCacheSettings>
</caching>

没什么太难的。

所以这才是最棒的!当我确认这是通过使用IIS7性能计数器时发生的,这意味着输出缓存丢失/秒是我正在发出的请求的100%。输出缓存命中为0/秒。

我正在使用一个第三方的网站负荷压力测试程序,使我的网站与查询。现在,源数据是什么?名单上的名字。该程序不断循环所有的名字,然后回到开始,漂洗重复。因此它必须至少调用一次相同的查询字符串。IIS日志文件确认了这一点。

我不会传递任何阿尔法或贝塔的数据。

这是我要打的查询字符串..。

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

所以..。我看错了演出柜台吗?还有什么其他的窍门可以看它是否被输出缓存呢?代码非常快,因此很难判断这是否是缓存的结果。

EN

回答 2

Stack Overflow用户

发布于 2012-03-24 16:23:00

也许为时已晚,但要帮助他人:如果您的响应头中有一个cookie,这将阻止它被缓存。outputcache (http)模块具有大量的静默检查,以确保响应可能被缓存。通过反射来查看它,可能会给任何可能无法放入缓存的人带来好处。

票数 7
EN

Stack Overflow用户

发布于 2009-10-04 12:08:11

使用像firebug这样的工具,查看来自请求的响应。您将能够从200或304判断是否使用了缓存响应(304)或是否发送了成功的响应(200)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1516214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档