package auth import ( "embed" "io/fs" "net/http" ) //go:embed assets var assetsFS embed.FS // StaticHandler 以 /static/ 前綴提供 assets 內的靜態檔案 // (Tailwind 建置輸出的 CSS 等),並允許瀏覽器快取。 func StaticHandler() http.Handler { sub, err := fs.Sub(assetsFS, "assets") if err != nil { panic(err) // embed 路徑固定,僅防呆 } fileServer := http.StripPrefix("/static/", http.FileServerFS(sub)) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 內容隨執行檔重建,過期重抓即可。 w.Header().Set("Cache-Control", "public, max-age=3600") fileServer.ServeHTTP(w, r) }) }