Reliable.HttpClient.Caching 1.0.2

dotnet add package Reliable.HttpClient.Caching --version 1.0.2
                    
NuGet\Install-Package Reliable.HttpClient.Caching -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Reliable.HttpClient.Caching" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reliable.HttpClient.Caching" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="Reliable.HttpClient.Caching" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Reliable.HttpClient.Caching --version 1.0.2
                    
#r "nuget: Reliable.HttpClient.Caching, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Reliable.HttpClient.Caching@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Reliable.HttpClient.Caching&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=Reliable.HttpClient.Caching&version=1.0.2
                    
Install as a Cake Tool

Reliable.HttpClient.Caching

NuGet Version

Intelligent HTTP response caching for Reliable.HttpClient with preset-based configuration and automatic memory management.

Why Reliable.HttpClient.Caching?

  • Zero Configuration – Works out of the box with sensible defaults
  • Preset-Based Setup – 6 ready-made configurations for common scenarios
  • Automatic Dependencies – No need to manually register IMemoryCache
  • Combined APIs – Resilience + Caching in one method call
  • Performance Optimized – Smart cache keys, configurable expiry, memory-efficient

Installation

dotnet add package Reliable.HttpClient.Caching

📖 Full Documentation | Examples

Quick Start

// Zero configuration - just add resilience with caching
services.AddHttpClient<WeatherApiClient>()
    .AddResilienceWithMediumTermCache<WeatherResponse>(); // 10 minutes cache

Option 2: Separate Registration

// Step 1: Add resilience
services.AddHttpClient<WeatherApiClient>()
    .AddResilience();

// Step 2: Add caching (automatically registers IMemoryCache)
services.AddHttpClient<WeatherApiClient>()
    .AddMediumTermCache<WeatherResponse>(); // 10 minutes cache

Option 3: Custom Configuration

services.AddHttpClient<WeatherApiClient>()
    .AddResilienceWithCaching<WeatherResponse>(
        resilienceOptions => resilienceOptions.Retry.MaxRetries = 5,
        cacheOptions => cacheOptions.DefaultExpiry = TimeSpan.FromMinutes(15)
    );

Preset-Based Configuration

Choose from ready-made cache presets for common scenarios:

// Short-term caching (1 minute) - for frequently changing data
services.AddHttpClient<ApiClient>()
    .AddShortTermCache<ApiResponse>();

// Medium-term caching (10 minutes) - for moderately stable data
services.AddHttpClient<ApiClient>()
    .AddMediumTermCache<ApiResponse>();

// Long-term caching (1 hour) - for stable data
services.AddHttpClient<ApiClient>()
    .AddLongTermCache<ApiResponse>();

// High-performance caching (5 minutes, large cache) - for high-traffic APIs
services.AddHttpClient<ApiClient>()
    .AddHighPerformanceCache<ApiResponse>();

// Configuration caching (30 minutes) - for config data
services.AddHttpClient<ConfigClient>()
    .AddConfigurationCache<ConfigResponse>();

Combined Resilience + Caching

// Resilience with preset caching
services.AddHttpClient<ApiClient>()
    .AddResilienceWithShortTermCache<ApiResponse>(); // 1 minute

services.AddHttpClient<ApiClient>()
    .AddResilienceWithMediumTermCache<ApiResponse>(); // 10 minutes

services.AddHttpClient<ApiClient>()
    .AddResilienceWithLongTermCache<ApiResponse>(); // 1 hour

// Custom resilience with preset caching
services.AddHttpClient<ApiClient>()
    .AddResilienceWithCaching<ApiResponse>(
        HttpClientPresets.SlowExternalApi(), // Resilience preset
        CachePresets.MediumTerm               // Cache preset
    );

Usage

public class WeatherService
{
    private readonly CachedHttpClient<WeatherResponse> _client;

    public WeatherService(CachedHttpClient<WeatherResponse> client)
    {
        _client = client;
    }

    public async Task<WeatherResponse> GetWeatherAsync(string city)
    {
        return await _client.GetFromJsonAsync($"/weather?city={city}");
        // First call hits API, subsequent calls return cached response
    }
}

When to Use Which Preset?

Scenario Preset Cache Duration Example
Real-time data (prices, scores) ShortTerm 1 minute Stock prices, live scores
Regular updates (news, feeds) MediumTerm 10 minutes News articles, social feeds
Reference data (catalogs, lists) LongTerm 1 hour Product catalogs, country lists
High-traffic APIs HighPerformance 5 min + large cache Popular endpoints
App configuration Configuration 30 minutes Feature flags, settings
File downloads FileDownload 2 hours Documents, images

Advanced Usage

For advanced scenarios like custom cache providers, detailed configuration options, and troubleshooting, see the comprehensive documentation.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Reliable.HttpClient.Caching:

Package Downloads
KodySu.Client

Типобезопасный клиент для API kody.su (поиск информации по телефонным номерам).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 173 8/29/2025
1.0.1 150 8/29/2025
1.0.0 156 8/29/2025
1.0.0-alpha1 170 8/29/2025

🐛 Bug Fix Release v1.0.2

     Fixed cache preset expiry times not being respected:
     • AddMediumTermCache now correctly uses 10 minutes (was using 5 minutes)
     • AddShortTermCache, AddLongTermCache, and other presets now use their documented expiry times
     • GetExpiry function now properly references configured DefaultExpiry instead of hardcoded
     fallback
     • Cache-Control headers still take precedence over preset values

     Breaking: None - this is a bug fix that corrects behavior to match documentation