Skip to content

Commit e574654

Browse files
committed
feat: add Brotli compression support
1 parent 36a6daa commit e574654

File tree

12 files changed

+23
-6
lines changed

12 files changed

+23
-6
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ ENV PATH /usr/local/go/bin:$PATH
5656
RUN apt-get update && \
5757
apt-get -y --no-install-recommends install \
5858
libargon2-dev \
59+
libbrotli-dev \
5960
libcurl4-openssl-dev \
6061
libonig-dev \
6162
libreadline-dev \

alpine.Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ ENV PATH /usr/local/go/bin:$PATH
5353
RUN apk add --no-cache --virtual .build-deps \
5454
$PHPIZE_DEPS \
5555
argon2-dev \
56+
brotli-dev \
5657
coreutils \
5758
curl-dev \
5859
gnu-libiconv-dev \

build-static.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ if [ -z "${PHP_EXTENSIONS}" ]; then
2323
fi
2424

2525
if [ -z "${PHP_EXTENSION_LIBS}" ]; then
26-
export PHP_EXTENSION_LIBS="bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip"
26+
export PHP_EXTENSION_LIBS="brotli,bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip"
2727
fi
2828

2929
if [ -z "${PHP_VERSION}" ]; then

caddy/frankenphp/Caddyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#}
3030

3131
root * public/
32-
encode zstd gzip
32+
encode zstd br gzip
3333

3434
# Uncomment the following lines to enable Mercure and Vulcain modules
3535
#mercure {

caddy/frankenphp/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
// plug in Caddy modules here.
1010
_ "github.com/caddyserver/caddy/v2/modules/standard"
11+
_ "github.com/dunglas/caddy-cbrotli"
1112
_ "github.com/dunglas/frankenphp/caddy"
1213
_ "github.com/dunglas/mercure/caddy"
1314
_ "github.com/dunglas/vulcain/caddy"

caddy/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ retract v1.0.0-rc.1 // Human error
99
require (
1010
github.com/caddyserver/caddy/v2 v2.7.6
1111
github.com/caddyserver/certmagic v0.20.0
12+
github.com/dunglas/caddy-cbrotli v1.0.0
1213
github.com/dunglas/frankenphp v1.0.3
1314
github.com/dunglas/mercure/caddy v0.15.9
1415
github.com/dunglas/vulcain/caddy v1.0.1
@@ -71,6 +72,7 @@ require (
7172
github.com/golang/glog v1.2.0 // indirect
7273
github.com/golang/protobuf v1.5.3 // indirect
7374
github.com/golang/snappy v0.0.4 // indirect
75+
github.com/google/brotli/go/cbrotli v0.0.0-20240116120200-adbc354d23af // indirect
7476
github.com/google/cel-go v0.15.1 // indirect
7577
github.com/google/certificate-transparency-go v1.1.7 // indirect
7678
github.com/google/go-tpm v0.9.0 // indirect

caddy/go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55k
106106
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
107107
github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
108108
github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
109+
github.com/dunglas/caddy-cbrotli v1.0.0 h1:+WNqXBkWyMcIpXB2rVZ3nwcElUbuAzf0kPxNXU4D+u0=
110+
github.com/dunglas/caddy-cbrotli v1.0.0/go.mod h1:KZsUu3fnQBgO0o3YDoQuO3Z61dFgUncr1F8rg8acwQw=
109111
github.com/dunglas/httpsfv v1.0.2 h1:iERDp/YAfnojSDJ7PW3dj1AReJz4MrwbECSSE59JWL0=
110112
github.com/dunglas/httpsfv v1.0.2/go.mod h1:zID2mqw9mFsnt7YC3vYQ9/cjq30q41W+1AnDwH8TiMg=
111113
github.com/dunglas/mercure v0.15.9 h1:Jdbi4jwzfIkZCcDX54W5C21S4kQX2AszfcoOAnSLZPw=
@@ -176,6 +178,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu
176178
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
177179
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
178180
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
181+
github.com/google/brotli/go/cbrotli v0.0.0-20240116120200-adbc354d23af h1:u7V797aWjlj0X9mAvcNXVNZujo6ACoSapaf/s7EIqo8=
182+
github.com/google/brotli/go/cbrotli v0.0.0-20240116120200-adbc354d23af/go.mod h1:nOPhAkwVliJdNTkj3gXpljmWhjc4wCaVqbMJcPKWP4s=
179183
github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
180184
github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
181185
github.com/google/cel-go v0.15.1 h1:iTgVZor2x9okXtmTrqO8cg4uvqIeaBcWhXtruaWFMYQ=

caddy/php-server.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ For more advanced use cases, see https://github.com/dunglas/frankenphp/blob/main
5151
cmd.Flags().BoolP("access-log", "a", false, "Enable the access log")
5252
cmd.Flags().BoolP("debug", "v", false, "Enable verbose debug logs")
5353
cmd.Flags().BoolP("mercure", "m", false, "Enable the built-in Mercure.rocks hub")
54-
cmd.Flags().BoolP("no-compress", "", false, "Disable Zstandard and Gzip compression")
54+
cmd.Flags().BoolP("no-compress", "", false, "Disable Zstandard, Brotli and Gzip compression")
5555
cmd.RunE = caddycmd.WrapCommandFuncForCobra(cmdPHPServer)
5656
},
5757
})
@@ -201,6 +201,11 @@ func cmdPHPServer(fs caddycmd.Flags) (int, error) {
201201
return caddy.ExitCodeFailedStartup, err
202202
}
203203

204+
br, err := caddy.GetModule("http.encoders.br")
205+
if err != nil {
206+
return caddy.ExitCodeFailedStartup, err
207+
}
208+
204209
zstd, err := caddy.GetModule("http.encoders.zstd")
205210
if err != nil {
206211
return caddy.ExitCodeFailedStartup, err
@@ -211,9 +216,10 @@ func cmdPHPServer(fs caddycmd.Flags) (int, error) {
211216
HandlersRaw: []json.RawMessage{caddyconfig.JSONModuleObject(encode.Encode{
212217
EncodingsRaw: caddy.ModuleMap{
213218
"zstd": caddyconfig.JSON(zstd.New(), nil),
219+
"br": caddyconfig.JSON(br.New(), nil),
214220
"gzip": caddyconfig.JSON(gzip.New(), nil),
215221
},
216-
Prefer: []string{"zstd", "gzip"},
222+
Prefer: []string{"zstd", "br", "gzip"},
217223
}, "handler", "encode", nil)},
218224
}
219225

dev-alpine.Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ ENV PHPIZE_DEPS \
1616
RUN apk add --no-cache \
1717
$PHPIZE_DEPS \
1818
argon2-dev \
19+
brotli-dev \
1920
curl-dev \
2021
oniguruma-dev \
2122
readline-dev \

dev.Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ RUN apt-get update && \
1818
apt-get -y --no-install-recommends install \
1919
$PHPIZE_DEPS \
2020
libargon2-dev \
21+
libbrotli-dev \
2122
libcurl4-openssl-dev \
2223
libonig-dev \
2324
libreadline-dev \

docs/config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Minimal example:
3333
3434
localhost {
3535
# Enable compression (optional)
36-
encode zstd gzip
36+
encode zstd br gzip
3737
# Execute PHP files in the current directory and serve assets
3838
php_server
3939
}

docs/laravel.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Alternatively, you can run your Laravel projects with FrankenPHP from your local
3030
# Set the webroot to the public/ dir
3131
root * public/
3232
# Enable compression (optional)
33-
encode zstd gzip
33+
encode zstd br gzip
3434
# Execute PHP files in the current directory and serve assets
3535
php_server {
3636
# Required for the public/storage/ dir

0 commit comments

Comments
 (0)