browser-caching: enable browser caching for WebUI

This commit is contained in:
Krishna Srinivas 2016-02-05 03:27:56 +05:30
parent b49f21ec82
commit a344e7713a
2 changed files with 21 additions and 3 deletions

View file

@ -93,6 +93,23 @@ func parseDate(req *http.Request) (time.Time, error) {
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
func TimeValidityHandler(h http.Handler) http.Handler {
return timeHandler{h}

View file

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