diff --git a/controllers/index.go b/controllers/index.go index 4f5ba0a17..727118fbb 100644 --- a/controllers/index.go +++ b/controllers/index.go @@ -33,7 +33,7 @@ func IndexHandler(w http.ResponseWriter, r *http.Request) { // Reject requests for the web UI if it's disabled. if isIndexRequest && config.Config.DisableWebFeatures { w.WriteHeader(http.StatusNotFound) - w.Write([]byte("404 - y u ask 4 this? If this is an error let us know: https://github.com/gabek/owncast/issues")) + w.Write([]byte("404 - y u ask 4 this? If this is an error let us know: https://github.com/owncast/owncast/issues")) return } @@ -42,14 +42,17 @@ func IndexHandler(w http.ResponseWriter, r *http.Request) { return } - http.ServeFile(w, r, path.Join("webroot", r.URL.Path)) - if path.Ext(r.URL.Path) == ".m3u8" { - middleware.DisableCache(&w) + middleware.DisableCache(w) clientID := utils.GenerateClientIDFromRequest(r) core.SetClientActive(clientID) + } else { + // Set a cache control header of one day + middleware.SetCache(1, w) } + + http.ServeFile(w, r, path.Join("webroot", r.URL.Path)) } // Return a basic HTML page with server-rendered metadata from the config file diff --git a/router/middleware/disableCache.go b/router/middleware/disableCache.go index 43ea2b719..d8df8c176 100644 --- a/router/middleware/disableCache.go +++ b/router/middleware/disableCache.go @@ -2,10 +2,18 @@ package middleware import ( "net/http" + "strconv" ) //DisableCache writes the disable cache header on the responses -func DisableCache(w *http.ResponseWriter) { - (*w).Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") - (*w).Header().Set("Expires", "0") +func DisableCache(w http.ResponseWriter) { + w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") + w.Header().Set("Expires", "0") +} + +//SetCache will set the cache control header of a response +func SetCache(days int, w http.ResponseWriter) { + seconds := strconv.Itoa(days * 86400) + w.Header().Set("Cache-Control", "max-age="+seconds) + w.Header().Set("Expires", seconds) }