perf: optimize cache headers for CDN-first caching

Use s-maxage=86400 for Cloudflare edge caching (24h) with max-age=0
so browsers always fetch from CDN. Combined with existing cache purge
on content changes, this minimizes origin server load while ensuring
fresh content.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Josh 2026-01-09 04:23:12 +02:00
parent b56757770d
commit a6e1069e45

View file

@ -98,7 +98,7 @@ func (s *Server) blogHome(w http.ResponseWriter, r *http.Request) {
s.recordPageView(q, r, "/", "")
if html, etag, err := q.GetPage(r.Context(), "/"); err == nil && html != nil {
s.servePreRendered(w, r, html, etag, "public, max-age=300")
s.servePreRendered(w, r, html, etag, "public, s-maxage=86400, max-age=0")
return
}
@ -156,7 +156,7 @@ func (s *Server) blogHome(w http.ResponseWriter, r *http.Request) {
return
}
s.servePreRendered(w, r, html, computeETag(html), "public, max-age=300")
s.servePreRendered(w, r, html, computeETag(html), "public, s-maxage=86400, max-age=0")
}
func (s *Server) blogList(w http.ResponseWriter, r *http.Request) {
@ -172,7 +172,7 @@ func (s *Server) blogList(w http.ResponseWriter, r *http.Request) {
s.recordPageView(q, r, "/posts", "")
if html, etag, err := q.GetPage(r.Context(), "/posts"); err == nil && html != nil {
s.servePreRendered(w, r, html, etag, "public, max-age=300")
s.servePreRendered(w, r, html, etag, "public, s-maxage=86400, max-age=0")
return
}
@ -223,7 +223,7 @@ func (s *Server) blogList(w http.ResponseWriter, r *http.Request) {
return
}
s.servePreRendered(w, r, html, computeETag(html), "public, max-age=300")
s.servePreRendered(w, r, html, computeETag(html), "public, s-maxage=86400, max-age=0")
}
func (s *Server) blogPost(w http.ResponseWriter, r *http.Request) {
@ -249,7 +249,7 @@ func (s *Server) blogPost(w http.ResponseWriter, r *http.Request) {
s.recordPageView(q, r, path, slug)
if html, etag, err := q.GetPage(r.Context(), path); err == nil && html != nil {
s.servePreRendered(w, r, html, etag, "public, max-age=3600")
s.servePreRendered(w, r, html, etag, "public, s-maxage=86400, max-age=0")
return
}
}
@ -457,7 +457,7 @@ func (s *Server) blogPost(w http.ResponseWriter, r *http.Request) {
return
}
s.servePreRendered(w, r, html, computeETag(html), "public, max-age=3600")
s.servePreRendered(w, r, html, computeETag(html), "public, s-maxage=86400, max-age=0")
}
func (s *Server) canPreview(r *http.Request, tenantID string) bool {
@ -543,7 +543,7 @@ func (s *Server) sitemap(w http.ResponseWriter, r *http.Request) {
baseURL := getBaseURL(r.Host)
w.Header().Set("Content-Type", "application/xml; charset=utf-8")
w.Header().Set("Cache-Control", "public, max-age=3600")
w.Header().Set("Cache-Control", "public, s-maxage=86400, max-age=0")
w.Write([]byte(`<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">