现在它看起来像这样
func cacheHandler(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Cache-Control", "max-age=1800")
h.ServeHTTP(w, r)
})
}
http.Handle("/", cacheHandler(http.FileServer(http.Dir("./template/index"))))
http.HandleFunc("/json", sendJSONHandler)
http.HandleFunc("/contact", contactHandler)
http.Handle("/static/", http.StripPrefix("/static/", cacheHandler(http.FileServer(http.Dir("./template/static")))))
http.ListenAndServe(":80", nil)
有没有办法一次为所有处理程序设置缓存标头?
答案 0 :(得分:2)
包裹多路复用器
http.ListenAndServe(":80", cacheHandler(http.DefaultServeMux))
而不是单独的处理程序。
请注意,ListendAndServe
在处理程序参数为http.DefaultServeMux
时使用nil
作为处理程序。此外,http.Handle
和http.HandleFunc
会向http.DefaultServeMux
添加处理程序。