aboutsummaryrefslogtreecommitdiff
path: root/echo/middleware/cache_headers_middleware.go
diff options
context:
space:
mode:
Diffstat (limited to 'echo/middleware/cache_headers_middleware.go')
-rw-r--r--echo/middleware/cache_headers_middleware.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/echo/middleware/cache_headers_middleware.go b/echo/middleware/cache_headers_middleware.go
new file mode 100644
index 0000000..f168dfd
--- /dev/null
+++ b/echo/middleware/cache_headers_middleware.go
@@ -0,0 +1,29 @@
1package middleware
2
3import (
4 "fmt"
5 "time"
6
7 gltime "code.crute.us/mcrute/golib/time"
8
9 "github.com/labstack/echo/v4"
10)
11
12var (
13 CacheOneHourMiddleware = CacheHeadersMiddleware(1 * time.Hour)
14 CacheOneDayMiddleware = CacheHeadersMiddleware(1 * gltime.Day)
15 CacheOneMonthMiddleware = CacheHeadersMiddleware(30 * gltime.Day)
16)
17
18func CacheHeadersMiddleware(d time.Duration) echo.MiddlewareFunc {
19 ds := int(d.Seconds())
20
21 return func(next echo.HandlerFunc) echo.HandlerFunc {
22 return func(c echo.Context) error {
23 c.Response().Header().Set("Vary", "Accept-Encoding")
24 c.Response().Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d", ds))
25 c.Response().Header().Set("Expires", time.Now().Add(d).Format(time.RFC1123))
26 return next(c)
27 }
28 }
29}