http-cache
A caching middleware that follows HTTP caching rules, thanks to http-cache-semantics. By default, it uses cacache as the backend cache manager.
How do I use this?
Likely you won't! At least not directly. Unless you are looking to implement a custom backend cache manager or client middleware you'll probably want to pull in one of the existing client implementations instead. See the Provided Client Implementations section below.
Minimum Supported Rust Version (MSRV)
1.88.0
Install
With cargo add installed :
Features
The following features are available. By default manager-cacache and url-standard are enabled.
manager-cacache(default): 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.streaming(disabled): enable streaming cache support using cacache for disk storage with moka for metadata tracking and TinyLFU eviction.rate-limiting(disabled): enable rate limiting functionality with governor.url-standard(default): enable url for URL parsing.url-ada(disabled): enable ada-url for WHATWG-compliant URL parsing (avoids Unicode/IDNA license).with-http-types(disabled): enable http-types type conversion support
URL Feature Notes
The url-standard and url-ada features are mutually exclusive - exactly one must be enabled.
The url-standard feature uses the url crate which depends on idna (Unicode license).
If you need to avoid the Unicode license, use url-ada instead:
[]
= { = "1.0", = false, = ["manager-cacache", "url-ada"] }
Breaking change for default-features = false users: You must now explicitly enable either url-standard or url-ada.
Documentation
Provided Client Implementations
- Reqwest: See README for more details
- Tower: See README for more details
- Surf: See README for more details
- Ureq: See README for more details
Server-Side Caching Middleware
- Tower Server: See README for more details
Additional Manager Implementations
- quick-cache: See README for more details
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.