summaryrefslogtreecommitdiff
path: root/system/db
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2017-03-21 14:17:34 -0700
committerSteve Manuel <nilslice@gmail.com>2017-03-21 14:17:34 -0700
commite7b51324f2578cc9c1ef4eeababfcec14162a3e9 (patch)
treebd3b186a88f3f6add0bcb377fbf5353e69fb2d26 /system/db
parent7676659cdd5336c3eebd668d4d69571609c88f38 (diff)
adding cache-control age and disabler
Diffstat (limited to 'system/db')
-rw-r--r--system/db/cache.go32
-rw-r--r--system/db/config.go5
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() {