如何验证ASP.NET MVC OutputCache在服务器上工作?

Mar*_*oDS 9 asp.net iis asp.net-mvc caching outputcache

我正在修复ASP.NET OutputCache的一个错误,它让我疯了.我们希望在服务器上进行缓存,但它似乎不起作用(它在不久之前,在我们的应用程序的旧版本中,但我们最近意外地发现了该错误).

在本地,我无法让缓存在服务器端工作.使用此属性:

[OutputCache(CacheProfile = "MyProfile", Location = OutputCacheLocation.Server)] // doesn't work
Run Code Online (Sandbox Code Playgroud)

现在,根据我通过谷歌搜索阅读的一些内容,这里可能是相关的信息:

  • IIS(localhost)中启用了输出缓存
  • 不要使用AuthorizeAttribute(自定义一个与继承).我特意调试了这一点,我有95%的信心这不是原因.
  • 我已经摆弄各种VaryByParams价值观,没有任何作用.
  • 缓存确实在客户端工作.

我已经开了一个perfmon会议,并从增加了一些柜台Web Service Cache组,我看到的是,有缓存的URL,但缓存错过:

perfmon图

我们现在面临的更大问题/错误是OutputCache现在无法正常工作.我们能够通过指定VaryByParams=""(空字符串)来解决这个问题.这是为客户做的.但它还不适用于服务器端.

我实际上是通过在应该缓存的操作中放置调试断点来检查它是否有效.它每次都被击中,这应该意味着缓存没有被击中.

小智 0

来自http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs

不保证内容将被缓存您指定的时间。当内存资源变低时,缓存会自动开始驱逐内容。

如果在测试期间服务器上的可用内存资源足够低,缓存将立即驱逐内容。我确信它甚至可能拒绝将您的内容放入缓存中。