Files
RustProxy/docs/TRANSFORM.md
T
2026-10-03 00:27:09 +01:00

42 lines
1.7 KiB
Markdown

# Static-response transformation
RustProxy 0.22.3 retains static transformation between origin decoding and shared-cache
storage. A transformed identity representation is cached once and downstream compression
is selected later for each client. Per-vhost and Docker-discovery transform opt-in remain
disabled by default even when the global engine is available.
## Administration dashboard
The main **Transform** workspace reads `GET /api/transform` and exposes in-memory runtime
statistics globally or per vhost:
- responses examined, transformed, skipped/fail-open and failed;
- transformed cache HITs (served without running the transformer again);
- original, transformed and saved bytes before client compression;
- average transform time;
- applied transforms by JavaScript/CSS/HTML/SVG/JSON;
- bounded skip/fail-open reason counters;
- a per-vhost effectiveness table.
Counters reset on process restart. They are diagnostic telemetry, not persisted cache
metadata. The Cache workspace separately marks stored transformed objects.
## Cache diagnostics
When `cache.expose_cache_status=true`, transformed cached representations are identified
with the RFC 9211 field plus an extension parameter:
```http
Cache-Status: RustProxy; hit; ttl=556488; detail="cache_hit"; transformed
```
The field remains `Cache-Status`, not `X-Cache-Status`. HTTP/2 and HTTP/3 normalize field
names to lowercase on the wire. Origin-provided `Cache-Status` and `X-Cache-Status` values
are removed before RustProxy emits its own diagnostics.
## Release status
The dashboard/telemetry does not change the existing v0.22.3 release gate. JavaScript and
CSS still require mature parser-backed minifiers, and the complete Rust compiler/runtime
acceptance gate must pass before release acceptance.