我拥有WebApi服务器(asp.net核心应用程序)和客户端(UWP应用程序)。
我使用UWP应用程序中的HttpClient调用Web Api服务。
有些资源是只读的,因此可以缓存:
[ResponseCache(Duration = 60*60*12, VaryByQueryKeys = new[] { "id" }, Location = ResponseCacheLocation.Client)]`
[HttpGet("{id}")]
public IActionResult Get(string id) { ... }
是否可以在UWP应用程序中启用HttpClient中的缓存,还是我必须自己完成?
HttpClient已经(好)缓存了。如果默认缓存行为不够,您可以通过HttpCacheControl类进一步控制缓存,该类分隔读写行为。
更重要的是知道如何使用您的HttpClient。即使它实现了IDisposable,你也不应该处理它,而是通过你的整个应用程序保持一个HttpClient对象,它是designed for re-use。
HttpClient不做的是在断开连接时返回缓存的结果。因此,还有其他库,如Akavache,它创建一个离线键值存储。