diff options
author | Steve Manuel <nilslice@gmail.com> | 2017-03-21 14:17:34 -0700 |
---|---|---|
committer | Steve Manuel <nilslice@gmail.com> | 2017-03-21 14:17:34 -0700 |
commit | e7b51324f2578cc9c1ef4eeababfcec14162a3e9 (patch) | |
tree | bd3b186a88f3f6add0bcb377fbf5353e69fb2d26 /system/db | |
parent | 7676659cdd5336c3eebd668d4d69571609c88f38 (diff) |
adding cache-control age and disabler
Diffstat (limited to 'system/db')
-rw-r--r-- | system/db/cache.go | 32 | ||||
-rw-r--r-- | system/db/config.go | 5 |
2 files changed, 26 insertions, 11 deletions
diff --git a/system/db/cache.go b/system/db/cache.go index 0120147..55dd42a 100644 --- a/system/db/cache.go +++ b/system/db/cache.go @@ -11,19 +11,29 @@ import ( // CacheControl sets the default cache policy on static asset responses func CacheControl(next http.Handler) http.HandlerFunc { return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { - etag := ConfigCache("etag").(string) - policy := fmt.Sprintf("max-age=%d, public", 60*60*24*30) - res.Header().Add("ETag", etag) - res.Header().Add("Cache-Control", policy) - - if match := req.Header.Get("If-None-Match"); match != "" { - if strings.Contains(match, etag) { - res.WriteHeader(http.StatusNotModified) - return + cacheDisabled := ConfigCache("cache_disabled").(bool) + if cacheDisabled { + res.Header().Add("Cache-Control", "no-cache") + next.ServeHTTP(res, req) + } else { + age := ConfigCache("cache_max_age").(int64) + etag := ConfigCache("etag").(string) + if age == 0 { + age = DefaultMaxAge + } + policy := fmt.Sprintf("max-age=%d, public", age) + res.Header().Add("ETag", etag) + res.Header().Add("Cache-Control", policy) + + if match := req.Header.Get("If-None-Match"); match != "" { + if strings.Contains(match, etag) { + res.WriteHeader(http.StatusNotModified) + return + } } - } - next.ServeHTTP(res, req) + next.ServeHTTP(res, req) + } }) } diff --git a/system/db/config.go b/system/db/config.go index 2706e97..6a409c2 100644 --- a/system/db/config.go +++ b/system/db/config.go @@ -13,6 +13,11 @@ import ( "github.com/gorilla/schema" ) +const ( + // DefaultMaxAge provides a 2592000 second (30-day) cache max-age setting + DefaultMaxAge = int64(60 * 60 * 24 * 30) +) + var configCache map[string]interface{} func init() { |