Merge pull request #1170 from krishnasrinivas/caching

caching: disable caching of index.html and enable caching for other UI asset files.
This commit is contained in:
Harshavardhana 2016-02-27 00:02:51 -08:00
commit 2520298734
2 changed files with 15 additions and 11 deletions

View File

@ -20,6 +20,7 @@ import (
"errors" "errors"
"net/http" "net/http"
"path" "path"
"regexp"
"strings" "strings"
"time" "time"
@ -125,8 +126,20 @@ func setBrowserCacheControlHandler(h http.Handler) http.Handler {
func (h cacheControlHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { func (h cacheControlHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" && strings.Contains(r.Header.Get("User-Agent"), "Mozilla") { if r.Method == "GET" && strings.Contains(r.Header.Get("User-Agent"), "Mozilla") {
// Expire cache in one hour for all browser requests. // For all browser requests set appropriate Cache-Control policies
w.Header().Set("Cache-Control", "public, max-age=3600") match, e := regexp.MatchString(privateBucket+`/([^/]+\.js|favicon.ico)`, r.URL.Path)
if e != nil {
writeErrorResponse(w, r, InternalError, r.URL.Path)
return
}
if match {
// For assets set cache expiry of one year. For each release, the name
// of the asset name will change and hence it can not be served from cache.
w.Header().Set("Cache-Control", "max-age=31536000")
} else if strings.HasPrefix(r.URL.Path, privateBucket+"/") {
// For non asset requests we serve index.html which will never be cached.
w.Header().Set("Cache-Control", "no-store")
}
} }
h.handler.ServeHTTP(w, r) h.handler.ServeHTTP(w, r)
} }

View File

@ -58,15 +58,6 @@ type GenericRep struct {
UIVersion string `json:"uiVersion"` UIVersion string `json:"uiVersion"`
} }
// GenericArgs - empty struct
type GenericArgs struct{}
// GetUIVersion - get UI version
func (web webAPI) GetUIVersion(r *http.Request, args *GenericArgs, reply *GenericRep) error {
reply.UIVersion = miniobrowser.UIVersion
return nil
}
// ServerInfoRep - server info reply. // ServerInfoRep - server info reply.
type ServerInfoRep struct { type ServerInfoRep struct {
MinioVersion string MinioVersion string