http-cache-ureq
September 9, 2026 ยท View on GitHub
A caching middleware that follows HTTP caching rules, thanks to http-cache-semantics. By default, it uses redb as the backend cache manager. Provides a simple caching wrapper around ureq.
Minimum Supported Rust Version (MSRV)
1.90.0
Install
With cargo add installed :
cargo add http-cache-ureq
Example
use http_cache_ureq::{RedbManager, CachedAgent};
#[smol_macros::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let client = CachedAgent::builder()
.cache_manager(RedbManager::new("./http-cache.redb")?)
.build()?;
let response = client
.get("https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching")
.call()
.await?;
println!("Status: {}", response.status());
Ok(())
}
Basic Usage
The CachedAgent wraps ureq's functionality while providing transparent HTTP caching:
use http_cache_ureq::{RedbManager, CachedAgent};
// Create a cached agent with default settings
let client = CachedAgent::builder()
.cache_manager(RedbManager::new("./http-cache.redb")?)
.build()?;
// Use it just like a regular ureq agent
let response = client.get("https://httpbin.org/json").call().await?;
Features
The following features are available. By default manager-redb is enabled.
manager-redb(default): enable redb, an embedded, persistent disk cache, backend manager.manager-cacache: enable cacache, a high-performance disk cache, backend manager.manager-moka(disabled): enable moka, a high-performance in-memory cache, backend manager.manager-foyer(disabled): enable foyer, a hybrid in-memory + disk cache, backend manager.json(disabled): enable JSON support via ureq's json feature.rate-limiting(disabled): enable cache-aware rate limiting functionality.url-ada(disabled): enable ada-url for URL parsing.
Documentation
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.