42 lines
1.7 KiB
Markdown
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.
|