ResponseCache
属性。该属性会在响应中添加Cache-Control
头部。
响应缓存指的是在ASP.NET Core MVC操作生成的HTTP响应上指定与缓存相关的头部。这些头部指定了您希望客户端和中间(代理)计算机如何缓存对某些请求的响应(是否缓存等)。这可以减少客户端或代理向Web服务器发出的请求数,因为将来针对同一操作的请求可能会从客户端或代理的缓存中提供服务。
此外:
响应缓存不会缓存Web服务器上的响应。它与输出缓存不同,输出缓存会在较早版本的ASP.NET和ASP.NET MVC上将响应缓存在服务器内存中。
这是我的操作方法的样子:
public class LookupController : Controller
{
[HttpGet]
[ResponseCache(Duration = 120)]
public IEnumerable<StateProvinceLookupModel> GetStateProvinces()
{
return _domain.GetStateProvinces();
}
}
然后我使用浏览器调用方法:http://localhost:40004/lookup/getstateprovinces。 以下是请求和响应头:
请注意,响应头中有Cache-Control:public,max-age-120
,与预期相符。
但是,如果在120秒内使用F5刷新页面,则GetStateProvince动作方法内的调试器断点会一直命中。这意味着它没有在客户端缓存数据。
还有什么其他需要做的来启用客户端缓存吗?
更新 我已尝试使用IE,Chrome和POSTMAN,但都没有成功。每次我在地址栏中键入URL或点击刷新时,客户端(即浏览器或postman)都会调用动作方法。
http://localhost/lookup/getstateprovinces.json
。顺便说一下,这是Postman的链接:https://www.getpostman.com/ - LP13