2017-08-14 139 views
2

我擁有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) –

回答

0

HttpClient已經(好)已經緩存了。如果默認緩存行爲不夠,您可以通過HttpCacheControl類進一步控制緩存,該類將讀取和寫入行爲分開。

更重要的是知道如何使用您的HttpClient。儘管它實現了IDisposable,但您不應該處置它,而是通過整個應用程序保留單個HttpClient對象,它是designed for re-use

什麼是HttpClient不做,是返回您緩存的結果,而斷開連接。因此還有其他庫,如Akavache,它創建一個離線鍵值存儲。

+0

我不處理HttpClient,我使用單例,但它仍然使向Web服務器發送同樣的請求(觀察結果Fiddler)。爲什麼? – Liero