在UWP应用程序中缓存HttpClient

问题描述:

我拥有WebApi服务器(asp.net核心应用程序)和客户端(UWP应用程序)。在UWP应用程序中缓存HttpClient

我使用UWP应用程序中的HttpClient调用WebApi服务。

有些资源是只读的,因此可以被缓存:

[ResponseCache(Duration = 60*60*12, VaryByQueryKeys = new[] { "id" }, Location = ResponseCacheLocation.Client)]` 
[HttpGet("{id}")] 
public IActionResult Get(string id) { ... } 

是否有可能启用HttpClient的缓存中UWP应用或做我必须做我自己?

+0

你打算使用什么样的缓存?如果您不想使用简单的内置功能,则有外部库增加了一种在客户端上缓存的简单方法。示例:[CacheCow](https://github.com/aliostad/CacheCow)和[腰果](https://github.com/joakimskoog/Cashew) –

HttpClient已经(好)已经缓存了。如果默认缓存行为不够,您可以通过HttpCacheControl类进一步控制缓存,该类将读取和写入行为分开。

更重要的是知道如何使用您的HttpClient。尽管它实现了IDisposable,但您不应该处置它,而是通过整个应用程序保留单个HttpClient对象,它是designed for re-use

什么是HttpClient不做,是返回您缓存的结果,而断开连接。因此还有其他库,如Akavache,它创建一个离线键值存储。

+0

我不处理HttpClient,我使用单例,但它仍然使向Web服务器发送同样的请求(观察结果Fiddler)。为什么? – Liero