From 03558563dfd8fd747695f63438cf2f187cdc4624 Mon Sep 17 00:00:00 2001 From: Egor Aristov Date: Tue, 11 Mar 2025 18:33:23 +0300 Subject: [PATCH] cache-control header --- cmd/webserver/webserver.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cmd/webserver/webserver.go b/cmd/webserver/webserver.go index 822ab73..65227b4 100644 --- a/cmd/webserver/webserver.go +++ b/cmd/webserver/webserver.go @@ -2,6 +2,7 @@ package main import ( "context" + "fmt" wizard_vue "github.com/egor3f/rssalchemy/frontend/wizard-vue" "github.com/egor3f/rssalchemy/internal/adapters/natsadapter" httpApi "github.com/egor3f/rssalchemy/internal/api/http" @@ -56,7 +57,11 @@ func main() { setIPExtractor(e, cfg) - e.StaticFS("/", echo.MustSubFS(wizard_vue.EmbedFS, wizard_vue.FSPrefix)) + cacheGroup := e.Group("", addCacheControlHeader(1*time.Hour)) + cacheGroup.Use(middleware.StaticWithConfig(middleware.StaticConfig{ + Root: wizard_vue.FSPrefix, + Filesystem: http.FS(wizard_vue.EmbedFS), + })) apiHandler := httpApi.New( na, @@ -80,6 +85,18 @@ func main() { } } +func addCacheControlHeader(ttl time.Duration) echo.MiddlewareFunc { + return func(next echo.HandlerFunc) echo.HandlerFunc { + return func(c echo.Context) error { + c.Response().Header().Set( + echo.HeaderCacheControl, + fmt.Sprintf("public, max-age=%d", int(ttl.Seconds())), + ) + return next(c) + } + } +} + func setIPExtractor(e *echo.Echo, cfg config.Config) { if len(cfg.RealIpHeader) > 0 { // Real ip header