mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: gzip static http server assets (#2272)
This commit is contained in:
+26
-3
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user