diff options
Diffstat (limited to 'echo/middleware/cache_headers_middleware.go')
-rw-r--r-- | echo/middleware/cache_headers_middleware.go | 29 |
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 @@ | |||
1 | package middleware | ||
2 | |||
3 | import ( | ||
4 | "fmt" | ||
5 | "time" | ||
6 | |||
7 | gltime "code.crute.us/mcrute/golib/time" | ||
8 | |||
9 | "github.com/labstack/echo/v4" | ||
10 | ) | ||
11 | |||
12 | var ( | ||
13 | CacheOneHourMiddleware = CacheHeadersMiddleware(1 * time.Hour) | ||
14 | CacheOneDayMiddleware = CacheHeadersMiddleware(1 * gltime.Day) | ||
15 | CacheOneMonthMiddleware = CacheHeadersMiddleware(30 * gltime.Day) | ||
16 | ) | ||
17 | |||
18 | func 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 | } | ||