ASP.NET 核心 ResponseCacheAttribute - VaryByCustom?
ASP.NET Core ResponseCacheAttribute - VaryByCustom?
我第一次使用 Microsoft.AspNetCore.Mvc.ResponseCacheAttribute
遇到了一个问题,我以前使用 OutputCache
中的 VaryByCustom
属性 可以解决这个问题ASP.NET(并在 global.asax 中使用 public override string GetVaryByCustomString(HttpContext context, string s)
)。
此 VaryByCustom 缓存似乎不再存在于 ASP.NET Core 中。是否有我在这里缺少的内置替代方案,或者我是否需要自己实现它才能实现类似的目标?
据我了解,您在 ASP.NET 核心中有两个灵活的选择:
- 如果您使用
ResponseCacheAttribute
,请使用 VaryByHeader
或 VaryByQueryKeys
。
使用Headers时,需要将value写为header,可以是任意值(不需要向客户端暴露数据):
Response.Headers.Add("X-My-Vary-Header", "this-is-variable");
本质上,这就是 VaryByCustomString
为您所做的一切。在我看来,您不再被迫将此代码放在特定的 method/file 中(例如 global.asax)。
- 在 Razor 中缓存时尝试
<cache>
Tag Helper。
在这里,您可以通过以下方式 "vary" 获得广泛的东西:vary-by-header
、vary-by-route
、vary-by-user
,甚至是自定义 vary-by
。
看看这里并决定是使用属性还是缓存标签助手:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper
我第一次使用 Microsoft.AspNetCore.Mvc.ResponseCacheAttribute
遇到了一个问题,我以前使用 OutputCache
中的 VaryByCustom
属性 可以解决这个问题ASP.NET(并在 global.asax 中使用 public override string GetVaryByCustomString(HttpContext context, string s)
)。
此 VaryByCustom 缓存似乎不再存在于 ASP.NET Core 中。是否有我在这里缺少的内置替代方案,或者我是否需要自己实现它才能实现类似的目标?
据我了解,您在 ASP.NET 核心中有两个灵活的选择:
- 如果您使用
ResponseCacheAttribute
,请使用VaryByHeader
或VaryByQueryKeys
。
使用Headers时,需要将value写为header,可以是任意值(不需要向客户端暴露数据):
Response.Headers.Add("X-My-Vary-Header", "this-is-variable");
本质上,这就是 VaryByCustomString
为您所做的一切。在我看来,您不再被迫将此代码放在特定的 method/file 中(例如 global.asax)。
- 在 Razor 中缓存时尝试
<cache>
Tag Helper。
在这里,您可以通过以下方式 "vary" 获得广泛的东西:vary-by-header
、vary-by-route
、vary-by-user
,甚至是自定义 vary-by
。
看看这里并决定是使用属性还是缓存标签助手:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper