mirror of
https://github.com/miniflux/v2.git
synced 2025-08-01 17:38:37 +00:00
Compress HTML responses to Gzip/Deflate if supported by browser
This commit is contained in:
parent
53deb0b8cd
commit
34a3fe426b
40 changed files with 82 additions and 58 deletions
|
@ -7,13 +7,14 @@ package html
|
|||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/miniflux/miniflux/http/response"
|
||||
"github.com/miniflux/miniflux/logger"
|
||||
)
|
||||
|
||||
// OK writes a standard HTML response.
|
||||
func OK(w http.ResponseWriter, b []byte) {
|
||||
func OK(w http.ResponseWriter, r *http.Request, b []byte) {
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
w.Write(b)
|
||||
response.Compress(w, r, b)
|
||||
}
|
||||
|
||||
// ServerError sends a 500 error to the browser.
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
package response
|
||||
|
||||
import (
|
||||
"compress/flate"
|
||||
"compress/gzip"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -32,3 +35,23 @@ func Cache(w http.ResponseWriter, r *http.Request, mimeType, etag string, conten
|
|||
w.Write(content)
|
||||
}
|
||||
}
|
||||
|
||||
// Compress the response sent to the browser.
|
||||
func Compress(w http.ResponseWriter, r *http.Request, data []byte) {
|
||||
acceptEncoding := r.Header.Get("Accept-Encoding")
|
||||
|
||||
switch {
|
||||
case strings.Contains(acceptEncoding, "gzip"):
|
||||
w.Header().Set("Content-Encoding", "gzip")
|
||||
gzipWriter := gzip.NewWriter(w)
|
||||
defer gzipWriter.Close()
|
||||
gzipWriter.Write(data)
|
||||
case strings.Contains(acceptEncoding, "deflate"):
|
||||
w.Header().Set("Content-Encoding", "deflate")
|
||||
flateWriter, _ := flate.NewWriter(w, -1)
|
||||
defer flateWriter.Close()
|
||||
flateWriter.Write(data)
|
||||
default:
|
||||
w.Write(data)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue