ASP.NET Core ResponseCacheAttribute-VaryByCustom?

时间:2018-09-18 16:04:44

标签: c# asp.net-core-mvc responsecache

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 如果使用的是from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("user-data-dir=C:\\Users\\AtechM_03\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2") driver = webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe', chrome_options=options) driver.get("https://www.google.co.in") ,请使用VaryByHeaderVaryByQueryKeys

使用标头时,您需要编写一个值来作为标头而变化,它可以是任意值(无需向客户端公开数据):

ResponseCacheAttribute

本质上,这就是Response.Headers.Add("X-My-Vary-Header", "this-is-variable"); 曾经为您所做的全部。按照我的看法,您不再被迫将这段代码放在特定的方法/文件中(例如global.asax)。

  1. 在Razor中进行缓存时,尝试使用VaryByCustomString标记助手。

在这里,您可以通过<cache>vary-by-headervary-by-route甚至是自定义vary-by-user来“改变”各种各样的内容。

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