feat: add compression layer
parent
1203a34f8f
commit
1cca0d46de
|
@ -4,7 +4,7 @@ branches:
|
|||
|
||||
pipeline:
|
||||
build:
|
||||
image: 'rust:1.69-alpine3.16'
|
||||
image: 'rust:1.83-alpine3.21'
|
||||
commands:
|
||||
- apk add build-base
|
||||
- cargo build
|
||||
|
|
|
@ -38,6 +38,35 @@ dependencies = [
|
|||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "alloc-no-stdlib"
|
||||
version = "2.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
|
||||
|
||||
[[package]]
|
||||
name = "alloc-stdlib"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
|
||||
dependencies = [
|
||||
"alloc-no-stdlib",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-compression"
|
||||
version = "0.4.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522"
|
||||
dependencies = [
|
||||
"brotli",
|
||||
"flate2",
|
||||
"futures-core",
|
||||
"memchr",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atomic-waker"
|
||||
version = "1.1.2"
|
||||
|
@ -179,6 +208,27 @@ version = "2.6.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||
|
||||
[[package]]
|
||||
name = "brotli"
|
||||
version = "7.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
|
||||
dependencies = [
|
||||
"alloc-no-stdlib",
|
||||
"alloc-stdlib",
|
||||
"brotli-decompressor",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "brotli-decompressor"
|
||||
version = "4.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
|
||||
dependencies = [
|
||||
"alloc-no-stdlib",
|
||||
"alloc-stdlib",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.16.0"
|
||||
|
@ -1408,9 +1458,11 @@ version = "0.6.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
|
||||
dependencies = [
|
||||
"async-compression",
|
||||
"base64",
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
|
|
|
@ -16,7 +16,7 @@ hyper = { version = "1.5.2" }
|
|||
tokio = { version = "1.42.0", features = ["full"] }
|
||||
tracing = "0.1.41"
|
||||
tracing-subscriber = {version = "0.3.19", features = ["env-filter"] }
|
||||
tower-http = { version = "0.6.2", features = ["fs", "trace", "auth"] }
|
||||
tower-http = { version = "0.6.2", features = ["fs", "trace", "auth", "compression-br", "compression-gzip"] }
|
||||
tar = "0.4.43"
|
||||
flate2 = "1.0.35"
|
||||
tokio-util = { version = "0.7.13", features = ["io"] }
|
||||
|
|
|
@ -13,7 +13,8 @@ use tar::Archive;
|
|||
use tokio::fs::File;
|
||||
use tokio_util::io::StreamReader;
|
||||
use tower_http::{
|
||||
services::ServeDir, trace::TraceLayer, validate_request::ValidateRequestHeaderLayer,
|
||||
compression::CompressionLayer, services::ServeDir, trace::TraceLayer,
|
||||
validate_request::ValidateRequestHeaderLayer,
|
||||
};
|
||||
|
||||
use std::{
|
||||
|
@ -50,7 +51,8 @@ pub fn app(
|
|||
app = app.route(path, any(|| async { Redirect::permanent(url) }))
|
||||
}
|
||||
|
||||
app.layer(TraceLayer::new_for_http())
|
||||
app.layer(CompressionLayer::new().gzip(true).br(true))
|
||||
.layer(TraceLayer::new_for_http())
|
||||
}
|
||||
|
||||
pub async fn post_static_archive(
|
||||
|
|
Loading…
Reference in New Issue