19 releases (10 breaking)
0.11.0 | Jan 16, 2023 |
---|---|
0.10.6 | Jul 31, 2022 |
0.10.3 | Jun 29, 2022 |
0.9.0 | Jan 29, 2021 |
0.4.0 | Jul 19, 2020 |
#902 in HTTP server
423 downloads per month
59KB
1K
SLoC
tide-compress
Outgoing body compression middleware for the Tide server framework.
#[async_std::main]
async fn main() {
let mut app = tide::new();
app.with(tide_compress::CompressMiddleware::new());
}
Features
- Support for Brotli, Gzip, and Deflate encodings, compile-time configurable through cargo feature flags.
- Prioritizes Brotli if available.
- Only pulls in the necessary dependencies for the desired configuration.
- Defaults to Brotli & Gzip.
- Also handles the
"identity"
encoding directive as per RFC 9110.
Accept-Encoding
header checking including priority.- Minimum body size threshold (Default: 1024 bytes, configurable).
- Does not compress responses with a
Cache-Control: no-transform
header. - Sets the
Vary
header. - Checks the
Content-Type
header (MIME).- Checks against jshttp's comprehensive database, which is compiled to a perfect hash function.
- The database can be regenerated in the crate's repository by running
cargo run generate-database
. - If not in the database, checks against a regular expression.
- Default:
^text/|\+(?:json|text|xml)$
(case insensitive). - Fully override-able to any custom
Regex
, withNone
as an option.
- Default:
- Functionality can be excluded in crate features if the
regex
crate poses build issues.
License
Licensed under the BlueOak Model License 1.0.0 — Contributions via DCO 1.1
Dependencies
~11–23MB
~352K SLoC