我正在使用来自 Nuget 的令人敬畏的MVCDonutCaching包来缓存整个页面,同时不缓存某些部分。这个过程很简单,一切正常:
我缓存如下:
[DonutOutputCache(CacheProfile = "FiveMins")]
public ActionResult Index()
{
return View();
}
对于我不想缓存的页面部分,我正在执行以下操作:
@Html.Action("HeaderLinks","Home", true)
这可以正常工作,并且确实缓存了大部分页面,但我的标题链接 - 如果用户未登录,则显示登录按钮的上下文相关链接,如果用户登录,则显示他们的用户名等 - 未缓存。到目前为止一切正常。
我遇到的问题是 headerlinks 属于主/布局页面并且被全面使用 - 无论 Action 是否设置了 DonutOutputCache 属性。当我创建另一个动作时,我们称之为“关于我们”,没有甜甜圈缓存属性,我根本看不到我的标题链接
public ActionResult AboutUs()
{
return View();
}
查看源代码,我看到以下内容
<!--Donut#
<ActionSettings xmlns="http://schemas.datacontract.org/2004/07/DevTrends.MvcDonutCaching" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ActionName>HeaderLinks</ActionName>
<ControllerName>Home</ControllerName>
<RouteValues xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:KeyValueOfstringanyType>
<a:Key>Area</a:Key>
<a:Value i:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema"/>
</a:KeyValueOfstringanyType>
</RouteValues>
</ActionSettings>
#-->
显然在上面的例子中,它是由甜甜圈缓存库生成的——链接部分被一些注释的 XML 替换。
简而言之,我的问题是:无论父操作是否使用甜甜圈缓存,这个库是否可以重用相同的子操作?
任何帮助,将不胜感激。