summaryrefslogtreecommitdiffstats
path: root/modules/httplib/serve.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/httplib/serve.go')
-rw-r--r--modules/httplib/serve.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/modules/httplib/serve.go b/modules/httplib/serve.go
index a193ed901c..6e147d76f5 100644
--- a/modules/httplib/serve.go
+++ b/modules/httplib/serve.go
@@ -17,11 +17,14 @@ import (
"time"
charsetModule "code.gitea.io/gitea/modules/charset"
+ "code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/httpcache"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/typesniffer"
"code.gitea.io/gitea/modules/util"
+
+ "github.com/klauspost/compress/gzhttp"
)
type ServeHeaderOptions struct {
@@ -38,6 +41,11 @@ type ServeHeaderOptions struct {
func ServeSetHeaders(w http.ResponseWriter, opts *ServeHeaderOptions) {
header := w.Header()
+ skipCompressionExts := container.SetOf(".gz", ".bz2", ".zip", ".xz", ".zst", ".deb", ".apk", ".jar", ".png", ".jpg", ".webp")
+ if skipCompressionExts.Contains(strings.ToLower(path.Ext(opts.Filename))) {
+ w.Header().Add(gzhttp.HeaderNoCompression, "1")
+ }
+
contentType := typesniffer.ApplicationOctetStream
if opts.ContentType != "" {
if opts.ContentTypeCharset != "" {