Files
Chris Lu e56a1c4c05 admin: pre-gzip embedded static assets, add cache headers (#9918)
The admin UI served embedded static files uncompressed and without
cache headers: embed.FS has zero mod times, so no Last-Modified, no
ETag, no 304s -- every page load re-downloaded ~700KB of css/js in
full, which gets painful over slow or tunneled links.

Gzip the static tree at generation time (go generate ./weed/admin)
and embed only the compressed mirror, shrinking the binary ~1.5MB.
The handler hands the pre-compressed bytes to gzip-capable clients,
decompresses for the rest, and sets Cache-Control, per-variant
content-hash ETags and Vary so repeat loads revalidate with a 304.
bootstrap.min.css goes 232KB -> 30KB on the wire.

A drift test keeps static_gz/ in sync with static/.
2026-06-10 12:54:36 -07:00

15 lines
317 B
Go

package admin
import (
"embed"
)
//go:generate go run gen_static_gz.go
// staticGzFS is the gzipped mirror of static/, generated by gen_static_gz.go.
// Only the compressed copies are embedded; StaticHandler decompresses for
// clients that do not accept gzip.
//
//go:embed all:static_gz
var staticGzFS embed.FS