要在Asp.net core 2.2中使用响应缓存,可以在Startup.cs文件的ConfigureServices方法中添加以下代码:
services.AddResponseCaching(options => { options.UseCaseSensitivePaths = true; options.MaximumBodySize = 1024; });
然后,在需要缓存的控制器方法或API方法上添加ResponseCache属性,并设置必要的参数,例如:
[HttpGet] [ResponseCache(Duration = 600, Location = ResponseCacheLocation.Any, NoStore = false, VaryByHeader = "User-Agent")] public IActionResult Get() { // ... your code ... }
但是,如果您尝试将must-revalidate添加到cache-control响应头,则会遇到错误。解决此问题的方法是通过修改响应标头中的Cache-Control值来模拟此行为:
[HttpGet] [ResponseCache(Duration = 600, Location = ResponseCacheLocation.Any, NoStore = false, VaryByHeader = "User-Agent")] public IActionResult Get() { Response.Headers["Cache-Control"] = "public,max-age=600,must-revalidate"; // ... your code ... }
通过将must-revalidate作为cache-control响应标头的一部分发送,可以达到所需的效果。