我正在使用Nuget的awesom 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替换。

简而言之,我的问题是:无论父操作是否使用圆环缓存,该库是否都可以重用相同的子操作?

任何帮助,将不胜感激。

===============>>#1 票数:4 已采纳

目前,您需要将Html.Action与DonutOutputCache动作过滤器一起使用,以便渲染圆环孔。 如果您在没有DonutOutputCache的情况下使用Html.Action,您将看到上面概述的占位符注释。

这是一个疏忽,将在下一个版本中解决。

http://mvcdonutcaching.codeplex.com/workitem/2388

  ask by JP. translate from so

未解决问题?本站智能推荐:

1回复

MVCDonutCaching-如何删除子操作缓存MVC Donut Caching

我使用的是MVCDonutCaching Nuget软件包,因为在本教程中他们说这可以通过子操作实现。 这个问题对我不起作用,或者我无法正确理解。 如果有人知道如何使用标准OutputCache属性删除子缓存,那也没关系! 我已经搜索过了,但是找不到。 参见以下示例:
2回复

Donut使用mvcdonutcaching ASP.NET MVC缓存_Layout

在我的ASP.NET MVC项目中,我在共享的_Layout.cshtml文件的导航菜单中有一个登录子菜单,如果用户已登录则显示用户信息,如果没有则显示注册/登录选项。 登录子菜单是我名为_LoginPartial共享文件夹中的部分视图: 虽然我大量缓存各种控制器的几个动作,但我想在_
2回复

Mvc Donut Caching以编程方式禁用缓存

我正在我的项目中使用MvcDonutCaching并寻找一种方法来全局禁用缓存以在调试/测试期间提供帮助。 我无法找到如何做到这一点的文档中,虽然我没有找到任何的例子CacheSettingsManager它公开了一个IsCachingEnabledGlobally但是属性这是readon
1回复

甜甜圈洞缓存 - 排除MiniProfiler.RenderIncludes

我有一个使用OutputCache属性修饰的ASP.NET MVC操作,但问题是MiniProfiler输出也被缓存。 我想从缓存(圆环孔)中排除MiniProfiler输出,但我不确定如何排除像MiniProfiler.RenderIncludes()之类的调用。 谁碰巧知道我怎么做到
1回复

如何使用C#MVC和Varnish进行甜甜圈缓存?

我添加到清漆配置 } 在我的mvc应用程序中,我有一个动作 并添加了一个请求头 但是Varnish会继续缓存整个页面。 我想念什么? 我注意到浏览器中的请求标头X-Esi不存在。 另外,上光油会正确删除<esi:include标签 使用GetH
2回复

我可以在ASP.NET MVC中使用[CompressFilter]而不破坏甜甜圈缓存

我试图让[ CompressFilter ]使用甜甜圈缓存并遇到问题。 会发生什么是整个页面被缓存而不仅仅是甜甜圈。 我正在使用的CompressFilter的源代码如下。 我将其从原始源更改为使用OnResultExecuted而不是OnActionExecuting()因为我需要访
4回复

我如何在ASP.NET MVC中“缓存”以获取更多信息

我见过的甜甜圈缓存的所有例子都是这样的: 如果我只是想要约会,那很好,但还有其他选择吗? 我知道有一个委托'MvcSubstitutionCallback',它有以下签名: 但是RenderAction和RenderPartial返回void,所以我不能从委托方法返回它们。
1回复

使用自定义Redis输出缓存提供程序时MVCDonutCaching失败

我有以下自定义Redis输出缓存: 这是在web.config中设置的: 当我使用outputcache属性时,一切正常: 但是,我试图用MVCDonutCaching Nuget包实现DonutCaching,并且当我将属性更改为 失败并显示以下错误:
1回复

DevTrends.MvcDonutCaching.KeyGenerator.GenerateKey中的NullReferenceException

我在这篇文章中遇到了@Aviv描述的问题: http : //www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3#125 我在这里查找错误并在Codeplex上找不到。 环境是中等信任! 路线 调
1回复

使用outputcache缓存页面时存储页面浏览量

我有一个页面,使用outputcaching缓存了几个小时。 但是,我仍然想在数据库中记录每个综合浏览量。 访问我的代码背后很重要,因为我将使用这些数据来显示个性化数据。 所以我的outputcache参数是: 解决方案的想法... 我想我基本上想要甜甜圈缓存,但是我