加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Donut hole缓存 – 排除MiniProfiler.RenderIncl

发布时间:2020-12-15 20:52:12 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用OutputCache属性修饰的ASP.NET MVC操作,但问题是MiniProfiler输出也被缓存.我想从缓存(圆环孔)中排除MiniProfiler输出,但我不确定如何排除像MiniProfiler.RenderIncludes()之类的调用. 谁碰巧知道我怎么做到这一点? 解决方法 如果在生产中使用M
我有一个使用OutputCache属性修饰的ASP.NET MVC操作,但问题是MiniProfiler输出也被缓存.我想从缓存(圆环孔)中排除MiniProfiler输出,但我不确定如何排除像MiniProfiler.RenderIncludes()之类的调用.

谁碰巧知道我怎么做到这一点?

解决方法

如果在生产中使用MiniProfiler,这一点非常重要.好像第一次访问页面是由启用了MiniProfiler的用户启动的,所有后续请求都将在DOM中包含MiniProfiler结果(因为它们现在被缓存).结果不仅不正确(因为他们只考虑首次加载),但所有访问者都能看到您的MiniProfiler结果.

首先,为了实现甜甜圈洞缓存,我正在利用:

http://mvcdonutcaching.codeplex.com/

这允许您添加在使用OutputCache时不会缓存的操作.

鉴于上述情况,您可以删除@using StackExchange.Profiling;从您的布局页面.然后你可以替换:

@MiniProfiler.RenderIncludes()

附:

@Html.Action("MiniProfiler","DoNotCache",excludeFromParentCache: true)

我创建了一个DoNotCache控制器,因此我的所有非可缓存元素都在一起,但这不是必需的,您可以将此操作放在任何控制器中.

public ActionResult MiniProfiler()
 {
      return View();
 }

然后视图本身看起来像:

@using StackExchange.Profiling;
@{
    Layout = null;
}
@MiniProfiler.RenderIncludes()

这将确保MiniProfiler结果在适当时显示,并且即使在使用DonutOutputCache批注的位置也不会在生产中缓存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读