diff --git a/CHANGELOG.md b/CHANGELOG.md index 739534da..50567ca7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v0.23.3 (WIP) + +- Fixed Gzip middleware not applying when serving static files. + + + ## v0.23.2 - Fixed `RecordQuery()` custom struct scanning ([#5958](https://github.com/pocketbase/pocketbase/discussions/5958)). diff --git a/apis/middlewares_gzip.go b/apis/middlewares_gzip.go index 23934d4e..91faf1a6 100644 --- a/apis/middlewares_gzip.go +++ b/apis/middlewares_gzip.go @@ -221,23 +221,26 @@ func (w *gzipResponseWriter) Push(target string, opts *http.PushOptions) error { } } -func (w *gzipResponseWriter) ReadFrom(r io.Reader) (n int64, err error) { - if w.wroteHeader { - w.ResponseWriter.WriteHeader(w.code) - } - - rw := w.ResponseWriter - for { - switch rf := rw.(type) { - case io.ReaderFrom: - return rf.ReadFrom(r) - case router.RWUnwrapper: - rw = rf.Unwrap() - default: - return io.Copy(w.ResponseWriter, r) - } - } -} +// Note: Disable the implementation for now because in case the platform +// supports the sendfile fast-path it won't run gzipResponseWriter.Write, +// preventing compression on the fly. +// +// func (w *gzipResponseWriter) ReadFrom(r io.Reader) (n int64, err error) { +// if w.wroteHeader { +// w.ResponseWriter.WriteHeader(w.code) +// } +// rw := w.ResponseWriter +// for { +// switch rf := rw.(type) { +// case io.ReaderFrom: +// return rf.ReadFrom(r) +// case router.RWUnwrapper: +// rw = rf.Unwrap() +// default: +// return io.Copy(w.ResponseWriter, r) +// } +// } +// } func (w *gzipResponseWriter) Unwrap() http.ResponseWriter { return w.ResponseWriter