【问题标题】:ASP.Net MVC using Donut Caching and Donut Hole cachingASP.Net MVC 使用 Donut Caching 和 Donut Hole 缓存
【发布时间】:2018-10-26 15:26:51
【问题描述】:

甜甜圈缓存和甜甜圈洞缓存对我来说不是很清楚。我读了几篇关于这个的文章,这些网址是

https://www.dotnettricks.com/learn/mvc/donut-caching-and-donut-hole-caching-with-aspnet-mvc-4 https://www.c-sharpcorner.com/UploadFile/chinnasrihari/Asp-Net-mvc-framework-donut-donut-hole-caching/ http://dotnet-helpers.com/mvc/donut-caching-with-asp-net-mvc/

1) 当人们使用 Donut Caching 时,他们应该使用 [DonutOutputCache(Duration=60)] 而不是 [OutputCache(Duration=60)],但是如果有人检查我在这里粘贴的链接,那么必须注意人们使用 OutputCache 属性而不是 DonutOutputCache强> 但我不清楚这个原因。

2) 如果我需要缓存部分视图,那么我需要使用 OutputCache 而不是 DonutOutputCache,否则 OutputCache 实际上会在内部使用 DonutOutputCache。

3) 如果我在客户端提到缓存位置,那么当来自不同 PC 的另一个客户端访问我的同一个缓存页面时会发生什么?我想如果我在客户端维护缓存,那么对于下一个访问者,db trip 将再次发生并缓存数据并存储在客户端......我说得对吗?

对不起,我的英语不好。谢谢 所以请有人澄清以上两点。谢谢

【问题讨论】:

    标签: asp.net-mvc caching


    【解决方案1】:

    1) Outputcache 与 ChildActionOnly 属性的组合类似于 Donut HOLE 缓存。甜甜圈的洞没有重新渲染,它是从缓存中提供的。通过使用 ChildActionOnly 属性,然后指定 OutputCache 属性和时间,您是说在服务器上缓存这部分甜甜圈洞指定的持续时间。它将从缓存中提供的甜甜圈洞。你必须同时使用它们。 请看一个很好的例子:http://www.tugberkugurlu.com/archive/donut-hole-caching-in-asp-net-mvc-by-using-child-actions-and-outputcacheattribute

    2) 为了缓存部分视图输出,我们再次对返回部分视图结果的控制器中的操作方法使用 OutputCache 属性。请看http://techfunda.com/howto/275/cache-partial-view-output

    3) 使用 OutputCacheLocation.Client 时,输出缓存位于请求发起的浏览器客户端上。每个在第一次请求页面时进入的新访问者都会在他们的浏览器中缓存该页面内容。

    【讨论】:

    • 1) 我的问题是当使用甜甜圈缓存时,我应该使用 [DonutOutputCache(Duration=60)] 而不是 [OutputCache(Duration=60)]。使用第 3 方但不使用甜甜圈相关属性。 OutputCache 内置在 asp.net mvc 中,我不需要安装与甜甜圈相关的 nuget 包。请分享您的意见。
    • 告诉我当 user1 请求一个缓存在客户端的页面时,当 user2 请求同一个页面时,action 将从 db 中获取数据。通常我们缓存以节省往返,但在客户端缓存的情况下,我猜缓存不会在不同用户之间使用和共享。请分享您的意见。谢谢
    • 使用客户端缓存,缓存在客户端的浏览器上。两个不同的浏览器命中,然后是的,数据库将被命中。如果你在服务器上缓存,那么你会保存命中直到时间到期。
    猜你喜欢
    • 2015-08-10
    • 2015-03-19
    • 2020-05-27
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多