我第一次使用Microsoft.AspNetCore.Mvc.ResponseCacheAttribute,并遇到了一个问题,以前我会使用ASP.NET中的OutputCache中的VaryByCustom属性(在global.asax中使用public override string GetVaryByCustomString(HttpContext context, string s) )来解决这个问题。
这种VaryByCustom缓存似乎不再存在于ASP.NET核心中。有没有一个内置的替代方案,我在这里遗漏了,或者我需要自己实现这一点,以实现类似的东西?
发布于 2018-09-19 05:55:02
据我理解,在ASP.NET核心中有两个灵活的选项:
VaryByHeader或VaryByQueryKeys,则使用ResponseCacheAttribute。在使用标头时,您需要将值编写为标头,这可能是任意值(不需要向客户端公开数据):
Response.Headers.Add("X-My-Vary-Header", "this-is-variable");本质上,这是VaryByCustomString为您所做的一切。在我看来,您不再被迫将这些代码放在特定的方法/文件中(例如,global.asax)。
<cache>标记Helper。在这里,您有各种各样的事情要根据:vary-by-header、vary-by-route、vary-by-user,甚至是自定义vary-by来“更改”。
在这里查看并决定是使用属性还是使用缓存标记助手:https://learn.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper
https://stackoverflow.com/questions/52390591
复制相似问题