feat(runtime): compress proxied responses by default - #157
Merged
Conversation
The generated Caddy proxy served every dynamic response uncompressed and offered no hook to change that, so consumers patched the generated config by hand. An encode directive is now emitted unless turned off. Fixes #156
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
caddyRealtimeProxyemitted noencodedirective andrunRealtimeStackwrote the generated config unconditionally, so every dynamic response behind the stack went out uncompressed. praetorium.gg worked around it by composing the config from the exported builder and string-inserting the directive (richardsolomou/praetorium.gg#294), a workaround coupled to the exact text this package emits. Fixes #156.Changes
The generated site block now opens with
encode zstd gzip, on by default since Caddy already skips WebSocket upgrades and incompressible content;encode: falseinCaddyRealtimeProxyOptionsturns it off. Measured on praetorium: the homepage document went 24 KiB to 6 KiB and its largest JSON payload ~300 KiB to ~61 KiB over the wire.How did you test this code?
pnpm check(format, lint, config, typecheck, 37 tests including a new one asserting the directive is present by default and absent withencode: false, build, package and policy checks, example app check)