feat: gzip static http server assets (#2272)

This commit is contained in:
Colin Adler
2022-06-13 13:14:22 -05:00
committed by GitHub
parent d057e8cc03
commit dad42fe712
4 changed files with 34 additions and 8 deletions
+26 -3
View File
@@ -4,19 +4,21 @@ import (
"context"
"crypto/x509"
"fmt"
"io"
"net/http"
"net/url"
"sync"
"time"
"github.com/andybalholm/brotli"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/klauspost/compress/zstd"
"github.com/pion/webrtc/v3"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"golang.org/x/xerrors"
"google.golang.org/api/idtoken"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"cdr.dev/slog"
"github.com/coder/coder/buildinfo"
"github.com/coder/coder/coderd/awsidentity"
@@ -350,7 +352,8 @@ func New(options *Options) *API {
r.Get("/state", api.workspaceBuildState)
})
})
r.NotFound(api.siteHandler.ServeHTTP)
r.NotFound(compressHandler(http.HandlerFunc(api.siteHandler.ServeHTTP)).ServeHTTP)
return api
}
@@ -381,3 +384,23 @@ func debugLogRequest(log slog.Logger) func(http.Handler) http.Handler {
})
}
}
func compressHandler(h http.Handler) http.Handler {
cmp := middleware.NewCompressor(5,
"text/*",
"application/*",
"image/*",
)
cmp.SetEncoder("br", func(w io.Writer, level int) io.Writer {
return brotli.NewWriterLevel(w, level)
})
cmp.SetEncoder("zstd", func(w io.Writer, level int) io.Writer {
zw, err := zstd.NewWriter(w, zstd.WithEncoderLevel(zstd.EncoderLevelFromZstd(level)))
if err != nil {
panic("invalid zstd compressor: " + err.Error())
}
return zw
})
return cmp.Handler(h)
}