问题标签 [donut-caching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1640 浏览

model-view-controller - 在 MVC 2 C# 中防止图像缓存

我有一个个人资料图片上传页面,用户可以在其中覆盖他们以前的个人资料图片。

但是当我将用户返回到他们的个人资料页面时,浏览器已经缓存了他们以前的图像,只有 F5 刷新会返回新图像。

是否可以阻止浏览器缓存图像,因为一些用户可能认为他们的新上传失败。

理想情况下,我只想阻止图像被缓存。但是快速浏览一下 donut-caching 似乎表明它在 MVC2 中是不可能的......??

感谢您的任何指示。

0 投票
2 回答
282 浏览

asp.net - 我需要帮助进行 Regex.Replace 与多个结果

我正在构建一个自定义页面缓存实用程序,它使用一种语法{Substitution:GetNonCachedData}来获取不应该缓存的数据。该解决方案与内置的<@ OutputCache %>东西非常相似,但没有那么灵活(我不需要它),最重要的是,在检索非缓存数据时允许会话状态可用。

无论如何,我有一个方法可以将 html 中的标记替换为 {Substitution} 标记中命名的静态方法的结果。

例如我的页面:

{Substitution:GetCurrentTime}用静态方法的结果填充。这是处理发生的地方:

该变量template是其中包含需要替换的自定义标记的 html。这种方法的问题是,每次我template用更新的 html 更新变量时,match.Index变量不再指向正确的字符开头,因为template现在添加了更多字符。

我可以通过计算字符等或其他一些古怪的方法来提出一个解决方案,但我首先要确保没有更简单的方法可以使用 Regex 对象来实现这一点。有人知道怎么做吗?

谢谢!

0 投票
1 回答
809 浏览

asp.net-mvc-2 - ASP MVC2 中部分缓存的当前做法是什么?

我的网站页面由两种内容组成。第一个在用户之间是可变的,但对于所有页面都是不变的。第二个在用户之间是不变的,但在页面之间是可变的。这是一种常见的布局。将输出缓存应用于此类内容的最佳方法是什么?

据我了解,Html.Substitute 助手与 MVC2 渲染管道不兼容,消除了甜甜圈缓存的旧方式。

对每个页面使用 VaryByParam="user" 的正常输出缓存?

特异性水平会降低输出缓存的价值。在缓存输出的生命周期内,同一用户不太可能多次查看同一页面。

使用备用 OutputCache 子系统

互联网上有几种尝试修改 OutputCache 属性和渲染子系统以支持替换。我找到的最好的是这里

但是,我发现的各种片段似乎都是非正式的实现,并且没有得到很好的支持。此外,我倾向于怀疑,如果将替换添加回 MVC2 管道那么容易,它就会完成。

从几个单独缓存的子动作组成最后一页

action 方法不会被标记为OutputCache属性,并且会返回一个包含多个Html.RenderAction调用的视图,这些调用将拉入独立缓存的内容。除了 using 的重量级影响之外RenderAction,它还会增加一层额外的间接层和代码味道。

您在 MVC2 中编写独立缓存的内容有何经验?什么效果好,什么效果不好?

0 投票
4 回答
5450 浏览

caching - ASP.NET MVC 3 中是否提供甜甜圈缓存

ASP.NET MVC 3(最终版)今天发布。当这个版本还处于起步阶段时,我记得在 codeplex 上读到正在考虑使用甜甜圈缓存。有谁知道这是否进入了V3?我似乎找不到任何信息,所以我只能(遗憾地)假设它没有发生。

0 投票
1 回答
1592 浏览

asp.net-mvc - MVCDonutCaching - 当父级未缓存甜甜圈时,子级操作出现问题

我正在使用来自 Nuget 的令人敬畏的MVCDonutCaching包来缓存整个页面,同时不缓存某些部分。这个过程很简单,一切正常:

我缓存如下:

对于我不想缓存的页面部分,我正在执行以下操作:

这可以正常工作,并且确实缓存了大部分页面,但我的标题链接 - 如果用户未登录,则显示登录按钮的上下文相关链接,如果用户登录,则显示他们的用户名等 - 未缓存。到目前为止一切正常。

我遇到的问题是 headerlinks 属于主/布局页面并且被全面使用 - 无论 Action 是否设置了 DonutOutputCache 属性。当我创建另一个动作时,我们称之为“关于我们”,没有甜甜圈缓存属性,我根本看不到我的标题链接

查看源代码,我看到以下内容

显然在上面的例子中,它是由甜甜圈缓存库生成的——链接部分被一些注释的 XML 替换。

简而言之,我的问题是:无论父操作是否使用甜甜圈缓存,这个库是否可以重用相同的子操作?

任何帮助,将不胜感激。

0 投票
1 回答
1022 浏览

asp.net-mvc-4 - NullReferenceException in DevTrends.MvcDonutCaching.KeyGenerator.GenerateKey

I'm having the problem described by @Aviv in this post: http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3#125

I looked for the error here and on Codeplex but not found.

The environment is Medium Trust!

Route

Controller

Web.config

_Layout.cshtml

Full error

0 投票
1 回答
164 浏览

asp.net - 使用 outputcache 缓存页面时存储页面浏览量

我有一个页面,我使用输出缓存缓存了几个小时。但是,我仍然想在我的数据库中记录每个页面浏览量。

访问我的代码隐藏非常重要,因为我将使用这些数据来显示个性化数据。

所以我的输出缓存参数是:

解决思路...

我想我基本上想要甜甜圈缓存,但我真的找不到太多关于它的信息。

替代控制是否适用于此?用户控件会被缓存吗?

即使我们使用输出缓存,访问数据库以存储页面浏览量的最佳解决方案是什么?

0 投票
1 回答
755 浏览

asp.net-mvc - 甜甜圈孔缓存 - 排除 MiniProfiler.RenderIncludes

我有一个用属性修饰的 ASP.NET MVC 操作OutputCache,但问题是 MiniProfiler 输出也被缓存了。我想从缓存(甜甜圈洞)中排除 MiniProfiler 输出,但我不确定如何排除 MiniProfiler.RenderIncludes() 之类的调用。

任何碰巧知道我该怎么做的人?

0 投票
1 回答
662 浏览

asp.net - 从输出缓存中排除动态呈现的用户控件

我们有一个站点(实际上是一个应用程序生成器),它在不同的场景中呈现了很多用户控件,

有一天,经理决定Output cache在主页添加,

好的,一切都很好,请求响应非常快!

但另一方面,这种缓存也有一些麻烦:

假设我们有一个InsertForm User control填充了一些实体,还有一个ListForm User Control显示实体列表,所以你可以猜到会发生什么,实体填充正确但没有显示在列表中,为什么?因为输出缓存。

然后我们必须从缓存中排除这个用户控件,经过一些搜索我们找到了Donut Caching,看起来很好,

我们使用动态添加服务器控件来替换

大多数用户控件实现依赖于所有页面生命周期,其中一些在Init中执行,一些在Load中,一些在Render中,因此在大多数情况下我们都有一个占位符,我们所做的是:

在此处输入图像描述

在此处输入图像描述

并在 PreRender 中删除 placeHolder 中的所有控件以防止重复:

在此处输入图像描述

在某些情况下我们有一个很好的结果但是在某些实现中我们又遇到了麻烦,所有的Request替换为HttpContext.Current.Request和所有的Sessions 都转换为字段,但在某些情况下,比如 useWizard我们仍然有异常:Request does not exist in this context. 而在绑定事件中我们又遇到了麻烦,事件没有正确绑定,比如向导的下一步按钮点击事件。

毕竟我填写我们的方式是错误的,也许这在这种情况下是不切实际的,

你怎么看?

我们还有其他选择吗?

还是所有这些麻烦都可以解决?请问有什么建议吗?

0 投票
1 回答
1346 浏览

asp.net-mvc - 在线部署后,MVC 甜甜圈缓存无法按预期工作

我们正在使用 MVC Donut Caching,并且整天都在尝试调试这个问题,但我仍然没有找到解决方案。

我们已选择开始在 OutputCache 上使用 DonutOutputCache 属性,并且通过日志记录注意到某些具有 DonutOutputCache 属性的部分视图操作未根据缓存参数进行缓存。

我们有一个带有以下嵌套部分视图的视图(索引)。具有指定的甜甜圈缓存属性的那些列在方括号中。

  • _LayoutMainBase.cshtml
    • _Header(部分视图)
      • _HeaderBottomStrip(部分视图)
        • _HeaderMainMenu (ParialView)[DonutOutputCache(Duration = 3600)]
    • RenderBody() (HomeController.Index)[DonutOutputCache(Duration = 3600)]
    • ...

通过日志记录,我们发现_HeaderMainMenu Partial View Action 实际上在不到一个小时的时间内被多次调用。

这没有发生:

  • 如果我们恢复到 OutputCache 属性
  • 在我们的工作站上进行本地测试时

关于可能是什么原因的任何见解?

谢谢你的帮助!