Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 如何将ViewComponent拉到响应缓存控制器之外';ASP.NET内核中的s操作_Razor_Asp.net Core_Outputcache_Asp.net Core Viewcomponent_Responsecache - Fatal编程技术网

Razor 如何将ViewComponent拉到响应缓存控制器之外';ASP.NET内核中的s操作

Razor 如何将ViewComponent拉到响应缓存控制器之外';ASP.NET内核中的s操作,razor,asp.net-core,outputcache,asp.net-core-viewcomponent,responsecache,Razor,Asp.net Core,Outputcache,Asp.net Core Viewcomponent,Responsecache,为了提高性能,我需要缓存主页操作的结果,同时允许登录用户的显示名称保持未缓存状态 我曾经在ASP.NET MVC框架项目中使用实现类似的功能。该系统非常有用,因为您可以将整个操作放入输出缓存,同时在缓存之外维护部分视图结果。因此,我可以有三到四个需要个性化的参与者(例如,调查、分析标签、用户名和化身、基于行为的文章列表等) 您知道我是否可以使用ASP.NET Core的新[OutputCache]属性或标记帮助器来处理此问题吗 目前,我将整个主页放入一个经典的内存缓存中。如果有这样的标记助手,那

为了提高性能,我需要缓存主页操作的结果,同时允许登录用户的显示名称保持未缓存状态

我曾经在ASP.NET MVC框架项目中使用实现类似的功能。该系统非常有用,因为您可以将整个操作放入输出缓存,同时在缓存之外维护部分视图结果。因此,我可以有三到四个需要个性化的参与者(例如,调查、分析标签、用户名和化身、基于行为的文章列表等)

您知道我是否可以使用ASP.NET Core的新
[OutputCache]
属性或
标记帮助器来处理此问题吗

目前,我将整个主页放入一个经典的内存缓存中。如果有这样的标记助手,那就太棒了:

<cache expires-after="TimeSpan.FromMinutes(60)">
  @*Cached part*@
  <cache-hole>
    @*Refreshed on each page refresh. This could work with a ResponseCache attribute too.*@
    @await Components.InvokeAsync("UserProfile")
  </cache-hole>
</cache>

@*缓存部分*@
@*在每个页面上刷新刷新。这也适用于ResponseCache属性*@
@wait Components.InvokeAsync(“UserProfile”)

我不确定您之前使用的是什么,但我认为它实际上并没有按照您的想法进行操作。输出缓存的整个点都绕过了视图渲染过程,因此,缓存中的任何内容都只是按原样返回,而不是进一步处理以确定是否需要渲染内部的内容

如果缓存整个页面,则页面中不能有任何需要根据用户而变化的部分。您只需要缩小缓存内容的范围。缓存页面中不变的部分,这至少会让主页在呈现方面有一个提升。这就是
缓存
标记帮助器的用途。您还可以使用此标记帮助器仅为特定用户缓存:

<cache vary-by-user="true">
    <!-- user-specific stuff -->
</cache>


这仍将渲染多次,但每个用户仅渲染一次。为特定用户缓存后,将使用缓存。

看看这是否有帮助:谢谢,你可能是对的,我应该将我的主页控制器拆分为多个可缓存的ViewComponents。特定于用户的内容将位于缓存标记之外。