如何在Glimpse“Views”选项卡上解释Check Cache和找到的列?

时间:2013-08-22 05:26:38

标签: asp.net-mvc outputcache glimpse

在调查慢视图渲染的过程中,我正在查看“视图”选项卡,并试图找出哪些用户控件被缓存以及哪些用户控件没有缓存。

通常第一个条目显示如下:

| Path                     | Check Cache | Found  | Details            |
|--------------------------|-------------|--------|--------------------|
|~/Path/To/UserControl.ascx| true        |  false | Not found in cache |
|~/Path/To/UserControl.ascx| false       |  true  | key    | value     |

所有用户控件都以相同的方式显示,无论任何缓存指令如何:

OutputCache Duration="3600" VaryByParam="none" Shared="True"

瞥了一眼还是我搞砸了输出缓存指令?

1 个答案:

答案 0 :(得分:5)

Glimpse中的“Check Cache”列与视图引擎的缓存有关 - 而不是输出缓存。

例如,给定(不太详细)输出:

Ordinal | Requested View | View Engine | Check Cache | Found
--------|----------------|-------------|-------------|------
1       | Index          | WebForms    | true        | false
2       | Index          | Razor       | true        | false
3       | Index          | WebForms    | false       | false
4       | Index          | Razor       | false       | **true**

MVC正在做什么,而Glimpse试图展示的是:

  1. 要求第一个已注册的视图引擎(WebForms)在其内部缓存中检查名为Index的视图 - 但它无法找到该视图(这就是为什么“Found”为false
  2. MVC不放弃。然后它要求注册的下一个视图引擎(Razor)在其内部缓存中检查名为Index的视图 - 但它也无法找到该视图。
  3. MVC继续持久化并返回第一个视图引擎(WebForms),直接询问名为Index的视图,而不是缓存。对于WebForms,这意味着在磁盘上查找*.aspx文件 - 但找不到该视图。
  4. 最后,MVC再次要求Razor找到视图(这次检查磁盘上的* .cshtml文件)并找到视图。
  5. Glimpse网站上还有一些information about the view tab

    我希望这有帮助!

    注意:当ASP.NET处于调试模式时,WebForms和Razor从不缓存其视图。