package middleware import ( "net/http" "github.com/klauspost/compress/gzhttp" ) // Compress returns gzip/zstd response compression using klauspost/compress, // which is considerably faster than compress/gzip. Responses that already // carry a Content-Encoding (e.g. precompressed frontend assets) are passed // through untouched. // // Request-body decompression is left disabled on purpose (decompression bombs). // // Do not apply this to the WebSocket route. func Compress() (func(http.Handler) http.Handler, error) { wrap, err := gzhttp.NewWrapper( gzhttp.MinSize(1000), gzhttp.CompressionLevel(5), gzhttp.EnableZstd(true), ) if err != nil { return nil, err } return func(next http.Handler) http.Handler { return wrap(next) }, nil }