disable cache for certain resources and respect try_files

This commit is contained in:
Florian Schade
2022-10-13 14:18:12 +02:00
parent fbf1eeb4c5
commit ff4f160fdc
2 changed files with 13 additions and 14 deletions

View File

@@ -22,18 +22,24 @@ func (f *fileServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
upath := path.Clean(path.Join("/", r.URL.Path))
r.URL.Path = upath
asset, err := f.root.Open(upath)
if err != nil {
disableCache := func() {
w.Header().Set("Cache-Control", "no-cache")
}
handleIndex := func() {
disableCache()
r.URL.Path = "/index.html"
f.ServeHTTP(w, r)
}
asset, err := f.root.Open(upath)
if err != nil {
handleIndex()
return
}
defer asset.Close()
s, _ := asset.Stat()
if s.IsDir() {
r.URL.Path = "/index.html"
f.ServeHTTP(w, r)
handleIndex()
return
}
@@ -43,6 +49,7 @@ func (f *fileServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
switch s.Name() {
case "index.html", "oidc-callback.html", "oidc-silent-redirect.html":
disableCache()
_ = withBase(buf, asset, "/")
default:
_, _ = buf.ReadFrom(asset)

View File

@@ -3,7 +3,6 @@ package svc
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"os"
@@ -90,7 +89,7 @@ func (p Web) getPayload() (payload []byte, err error) {
Msg("web config doesn't exist")
}
payload, err = ioutil.ReadFile(p.config.Web.Path)
payload, err = os.ReadFile(p.config.Web.Path)
if err != nil {
p.logger.Fatal().
@@ -102,7 +101,7 @@ func (p Web) getPayload() (payload []byte, err error) {
}
// Config implements the Service interface.
func (p Web) Config(w http.ResponseWriter, r *http.Request) {
func (p Web) Config(w http.ResponseWriter, _ *http.Request) {
payload, err := p.getPayload()
if err != nil {
@@ -152,13 +151,6 @@ func (p Web) Static(ttl int) http.HandlerFunc {
w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%s, must-revalidate", strconv.Itoa(ttl)))
w.Header().Set("Expires", expires)
w.Header().Set("Last-Modified", lastModified)
if r.URL.Path == rootWithSlash || r.URL.Path == rootWithSlash+"index.html" {
w.Header().Set("Cache-Control", "no-cache")
} else {
w.Header().Set("Cache-Control", "must-revalidate")
}
w.Header().Set("SameSite", "Strict")
static.ServeHTTP(w, r)