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

1.7 KiB

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:

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.