2

Microsoft.AspNetCore.Mvc.ResponseCacheAttribute第一次使用并遇到了一个问题,我以前在 ASP.NET中使用该VaryByCustom属性(并在 global.asax 中使用)可以解决这个问题。OutputCachepublic override string GetVaryByCustomString(HttpContext context, string s)

这种 VaryByCustom 缓存似乎不再存在于 ASP.NET Core 中。是否有我在这里缺少的内置替代方案,或者我需要自己实现它以实现类似的功能?

4

1 回答 1

1

据我了解,您在 ASP.NET 核心中有两个灵活的选择:

  1. 如果您正在使用 ,请使用VaryByHeader或。VaryByQueryKeysResponseCacheAttribute

使用 Headers 时,您需要将要变化的值作为标头写入,该值可以是任意值(无需向客户端公开数据):

Response.Headers.Add("X-My-Vary-Header", "this-is-variable");

从本质上讲,这就是VaryByCustomString你曾经为你所做的一切。在我看来,您不再被迫将此代码放在特定的方法/文件中(例如 global.asax)。

  1. 在 Razor 中缓存时尝试使用<cache>Tag Helper。

在这里,您可以通过以下方式“改变”范围:vary-by-headervary-by-routevary-by-user,甚至自定义vary-by

看看这里并决定是使用属性还是缓存标签助手:https ://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag -帮手

于 2018-09-19T05:55:02.633 回答