Reliable.HttpClient.Caching 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reliable.HttpClient.Caching --version 1.0.1
                    
NuGet\Install-Package Reliable.HttpClient.Caching -Version 1.0.1
                    
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.1" />
                    
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.1" />
                    
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.1
                    
#r "nuget: Reliable.HttpClient.Caching, 1.0.1"
                    
#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.1
                    
#: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.1
                    
Install as a Cake Addin
#tool nuget:?package=Reliable.HttpClient.Caching&version=1.0.1
                    
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.2.0 0 9/18/2025
1.1.0 0 9/18/2025
1.0.2 440 8/29/2025
1.0.1 153 8/29/2025
1.0.0 157 8/29/2025
1.0.0-alpha1 173 8/29/2025

🐛 Bug Fix Release v1.0.1

     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