Package static provides a handler for static file serving with cache control and automatic fingerprinting.
-
Get package:
go get -u github.com/gowww/static
-
Import it in your code:
import "github.com/gowww/static"
Use Handle with the URL path prefix and the source directory to get a Handler that will serve your static files:
staticHandler := static.Handle("/static/", "static")
http.Handle("/static/", staticHandler)
Use Handler.Hash to append the file fingerprint to a file name (if the file can be opened, obviously):
staticHandler.Hash("scripts/main.js")
But generally, you'd want to use this method in your templates:
tmpl := `<script src="{{asset "scripts/main.js"}}"></script>`
views := template.Must(template.New("main").Funcs(template.FuncMap{
"asset": staticHandler.Hash,
}).Parse(tmpl))