diff --git a/build/package/Dockerfile.dashboard b/build/package/Dockerfile.dashboard index 12d61f39..2c604942 100644 --- a/build/package/Dockerfile.dashboard +++ b/build/package/Dockerfile.dashboard @@ -19,7 +19,7 @@ WORKDIR /dashboard-ui # enable pnpm RUN corepack enable -RUN corepack prepare pnpm@latest --activate +RUN corepack prepare pnpm@9.14.2 --activate # fetch dependencies COPY dashboard-ui/package.json ./ diff --git a/modules/dashboard/pkg/app/website.go b/modules/dashboard/pkg/app/website.go index f06c9e57..8b7185b0 100644 --- a/modules/dashboard/pkg/app/website.go +++ b/modules/dashboard/pkg/app/website.go @@ -25,6 +25,7 @@ import ( zlog "github.com/rs/zerolog/log" "github.com/kubetail-org/kubetail/modules/shared/config" + "github.com/kubetail-org/kubetail/modules/shared/middleware" ) type websiteHandlers struct { @@ -40,7 +41,9 @@ func (app *websiteHandlers) InitStaticHandlers(root *gin.RouterGroup) { // add assets directory if assetsFS, err := fs.Sub(app.websiteFS, "assets"); err == nil { - root.StaticFS("/assets", http.FS(assetsFS)) + assetsGroup := root.Group("/assets") + assetsGroup.Use(middleware.CacheControlMiddleware) + assetsGroup.StaticFS("/", http.FS(assetsFS)) } } diff --git a/modules/shared/middleware/middleware.go b/modules/shared/middleware/middleware.go index f0edaee8..43d2f513 100644 --- a/modules/shared/middleware/middleware.go +++ b/modules/shared/middleware/middleware.go @@ -66,3 +66,9 @@ func LoggingMiddleware(hideHealthChecks bool) gin.HandlerFunc { m.Send() } } + +// Add far-future expires cache headers +func CacheControlMiddleware(c *gin.Context) { + c.Writer.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + c.Next() +}