HttpClient.Cache
0.0.2
See the version list below for details.
dotnet add package HttpClient.Cache --version 0.0.2
NuGet\Install-Package HttpClient.Cache -Version 0.0.2
<PackageReference Include="HttpClient.Cache" Version="0.0.2" />
<PackageVersion Include="HttpClient.Cache" Version="0.0.2" />
<PackageReference Include="HttpClient.Cache" />
paket add HttpClient.Cache --version 0.0.2
#r "nuget: HttpClient.Cache, 0.0.2"
#:package HttpClient.Cache@0.0.2
#addin nuget:?package=HttpClient.Cache&version=0.0.2
#tool nuget:?package=HttpClient.Cache&version=0.0.2
HttpClient.Cache
HTTP/1.1 compliant caching layer for the .NET HttpClient.
A prerelease package is availble on nuget.
It supports file based caching of responses based on the HTTP/1.1 caching headers specified in RFC7234.
Features
- Pluggable caching for
HttpClient - Customizable cache key computation (supports both shared and private caching)
- Extensible cache entry and cache handler interfaces (defaults to file based caching)
- Easy integration with dependency injection
Getting Started
Installation
Add the package reference to your project:
dotnet add package HttpClient.Cache
Usage
- Register the cache handler and related services on your
HttpClient. - Use the
HttpClientas usual.
Note that all uses of the cache goes via HttpClient, so caching can easily be obtained using e.g generated clients such as Refit clients.
Example
// Register the caching client on a HttpClient in your Program.cs
services.AddHttpClient("cachedClient")
.AddResponseCache(); // Defaults to using the shared, file based cache.
// Use the client as normally
var client = httpClientFactory.CreateClient("cachedClient");
var firstResponse = await client.GetAsync("https://example.com/"); // Returns a "non-private" Cache-Control header
var secondResponse = await client.GetAsync("https://example.com/");
Assert.Equal(CacheType.None, firstResponse.GetCacheType()); // This response was not obtained from cache.
Assert.Equal(CacheType.Shared, secondResponse.GetCacheType()); // This response was obtained from the shared (not private) cache.
Note that the usage here is different compared to e.g. Replicant.
Custom Caches
It is possible to use a custom cache for a client. Consider the following example:
var cache = new FileCache("/some/cache/directory");
services.AddHttpClient("cachedClient")
.AddResponseCache(cache);
FileCache implements IHttpCache and this is an extension point if one wants to use a different, non-file based cache implementation.
Key Components
CacheHandler: HTTP message handler that manages caching logic. This handler can be registered on aHttpClientas a message handler layer.IHttpCache: Interface for cache storage implementations. The default file based implementation isFileCache.
Alternatives
License
This project is licensed under the MIT License.
Contributing
Contributions are welcome! Please open issues or submit pull requests for improvements and bug fixes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.Extensions.Http (>= 9.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.5)
- System.IdentityModel.Tokens.Jwt (>= 8.12.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.