Measured 2026-10-16, uncompressed until now: the directory's answers (the feed list ipx reads, 603 KB of JSON, ~134 ms of a 159 ms Directory request), ipx's snapshot upload (~100 KB each half hour), both /metrics (4.7 and 0.9 KB every 15 s) and every trace export to Tempo. Already compressed: ipx-web's answers (zstd, #239), the home page and the directory's public pages through Cloudflare (brotli, zstd). - The directory compresses with brotli, zstd or gzip as asked, and unpacks a gzipped request. - ipx sends its snapshot gzipped; the directory is deployed first. - Both /metrics answer gzipped, as Prometheus asks. - opentelemetry-otlp's gzip-http: OTEL_EXPORTER_OTLP_COMPRESSION=gzip compresses the export, set for all three in production's compose file; Caddy's exporter reads the same variable. - web/build.mjs writes .br (quality 11) and .gz (level 9) beside each text file, and Caddy serves them in place (file_server precompressed): app.js 30 KB where zstd on the fly gave 37, app.css 11 where 14. A .br or .gz asked for by name is refused, or /admin.js.br would be the admin page's script without the check that keeps it to admins; in a handle of its own, since a bare respond runs after the handles. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
844 B
TOML
38 lines
844 B
TOML
[package]
|
|
name = "ipx-directory"
|
|
version = "1.1.2-dev"
|
|
edition.workspace = true
|
|
|
|
[[bin]]
|
|
name = "ipx-directory"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
ammonia.workspace = true
|
|
anyhow.workspace = true
|
|
axum.workspace = true
|
|
clap.workspace = true
|
|
futures-util.workspace = true
|
|
ipx-feed.workspace = true
|
|
opentelemetry.workspace = true
|
|
opentelemetry-otlp.workspace = true
|
|
opentelemetry_sdk.workspace = true
|
|
mimalloc.workspace = true
|
|
percent-encoding.workspace = true
|
|
reqwest.workspace = true
|
|
sea-orm.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sha2.workspace = true
|
|
tokio.workspace = true
|
|
toml.workspace = true
|
|
tower-http.workspace = true
|
|
tracing.workspace = true
|
|
tracing-opentelemetry.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
url.workspace = true
|
|
|
|
[dev-dependencies]
|
|
flate2.workspace = true
|
|
tower.workspace = true
|