Asp.net mvc 从OutputCache属性asp.net mvc扩展

Asp.net mvc 从OutputCache属性asp.net mvc扩展,asp.net-mvc,asp.net-mvc-3,caching,outputcache,Asp.net Mvc,Asp.net Mvc 3,Caching,Outputcache,最近,我一直在探索asp.net mvc-3中OutputCache属性的源代码,打算根据我的应用程序的需要继承和自定义它。我原以为它会包含一些缓存机制,但我没能找到它在缓存中存储结果和actionresult并在后续请求中检索的位置。此外,在onActionExecuting、onResultExecuting等的实现中,我看到了如下代码 if(filterContext.ChildRequest or perhaps ChildAction) { } 若当前请求不是子操作,那个么缓存属性似

最近,我一直在探索asp.net mvc-3中OutputCache属性的源代码,打算根据我的应用程序的需要继承和自定义它。我原以为它会包含一些缓存机制,但我没能找到它在缓存中存储结果和actionresult并在后续请求中检索的位置。此外,在
onActionExecuting
onResultExecuting
等的实现中,我看到了如下代码

if(filterContext.ChildRequest or perhaps ChildAction)
{
}

若当前请求不是子操作,那个么缓存属性似乎什么也并没有做。有人能解释一下这种行为吗。此外,如果不在OutupCache属性中,则实际执行缓存的位置?

缓存不是在框架级别执行的,而是在Web服务器(IIS)、中间代理、最终客户端(浏览器)缓存等中执行的


提供了有关数据缓存位置的详细信息。

缓存不是在框架级别执行的,而是在Web服务器(IIS)、中间代理、最终客户端(浏览器)缓存等中执行的


提供有关数据缓存位置的详细信息。

基于代码,如果不是子操作,则将缓存处理委托回标准ASP.NET基础结构。它发生在OnResultExecuting中,检查它是否不是子操作,然后创建OutputCachedPage包装以执行请求。此包装器继承自System.Web.UI.Page,并使用InitOutputCache方法初始化输出缓存。此方法配置响应的缓存策略(response.cache)。我认为实际的缓存发生在System.Web.caching.OutputCacheModule(oneter,OnExit方法)中。最后,基于之前在页面上设置的缓存策略。

基于代码,如果不是子操作,则将缓存处理委托回标准ASP.NET基础结构。它发生在OnResultExecuting中,检查它是否不是子操作,然后创建OutputCachedPage包装以执行请求。此包装器继承自System.Web.UI.Page,并使用InitOutputCache方法初始化输出缓存。此方法配置响应的缓存策略(response.cache)。我认为实际的缓存最终发生在System.Web.caching.OutputCacheModule(oneter,OnExit方法)中,基于之前在页面上设置的缓存策略。

如果我们将VaryByParam属性指定为“id;name”,则获取并检查操作方法参数的更改在OutputCacheModule中,这是通过根据指定的“vary”参数生成缓存项键来完成的。此键用于在缓存中存储/查找值。缓存键构建在CreateOutputCachedItemKey私有方法中,该方法根据指定的参数调查查询字符串、表单数据等。如果我们已将VaryByParam属性指定为“id;name”,则将获取并检查操作方法参数的更改在OutputCacheModule中,这是通过根据指定的“vary”参数生成缓存项键来完成的。此键用于在缓存中存储/查找值。缓存密钥构建在CreateOutputCachedItemKey私有方法中,该方法根据指定的参数调查查询字符串、表单数据等。