browser-caching: enable browser caching for WebUI

master
Krishna Srinivas 9 years ago
parent b49f21ec82
commit a344e7713a
  1. 17
      generic-handlers.go
  2. 1
      routers.go

@ -93,6 +93,23 @@ func parseDate(req *http.Request) (time.Time, error) {
return time.Time{}, errors.New("invalid request") return time.Time{}, errors.New("invalid request")
} }
// Adds Cache-Control header
type cacheControlHandler struct {
handler http.Handler
}
func setCacheControlHandler(h http.Handler) http.Handler {
return cacheControlHandler{h}
}
func (h cacheControlHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
// expire the cache in one week
w.Header().Set("Cache-Control", "public, max-age=604800")
}
h.handler.ServeHTTP(w, r)
}
// TimeValidityHandler to validate parsable time over http header // TimeValidityHandler to validate parsable time over http header
func TimeValidityHandler(h http.Handler) http.Handler { func TimeValidityHandler(h http.Handler) http.Handler {
return timeHandler{h} return timeHandler{h}

@ -55,6 +55,7 @@ type WebAPI struct {
func getWebAPIHandler(web *WebAPI) http.Handler { func getWebAPIHandler(web *WebAPI) http.Handler {
var mwHandlers = []MiddlewareHandler{ var mwHandlers = []MiddlewareHandler{
setCacheControlHandler, // Adds Cache-Control header
TimeValidityHandler, // Validate time. TimeValidityHandler, // Validate time.
AuthHandler, // Authentication handler for verifying tokens. AuthHandler, // Authentication handler for verifying tokens.
CorsHandler, // CORS added only for testing purposes. CorsHandler, // CORS added only for testing purposes.

Loading…
Cancel
Save