Reputation: 684
I am not sure, how in Golang we can leverage browser caching for only static files like CSS
, js
and not HTML
template file.
With .htaccess
in Apache, it used to be easy, but I don't see any such thing in golang
I want to know, any hack or method available where I can cache static files like css
, js
without using cloudflare - My app does not work with cloudflare.
Upvotes: 1
Views: 1742
Reputation: 12845
Browser caching is controlled by headers sent by the server. This way it doesn’t depend on particular installed software.
You need to send headers Etag
and Cache-Control
. Like this
func Handler(w http.ResponseWriter, r *http.Request) {
e := "SomeKey describing content - eg checksum"
w.Header().Set("Etag", e)
w.Header().Set("Cache-Control", "max-age=2592000") // 30 days
if match := r.Header.Get("If-None-Match"); match != "" {
if strings.Contains(match, e) {
w.WriteHeader(http.StatusNotModified)
return
}
}
...
}
Useful links:
More details https://www.sanarias.com/blog/115LearningHTTPcachinginGo
Middleware example https://github.com/dc0d/cache-control by Kaveh Shahbazian
Intro to HTTP caching and headers http://dev.mobify.com/blog/beginners-guide-to-http-cache-headers/
Upvotes: 4
Reputation: 8606
The fact that you are using golang does not mean that you cannot use a reverse proxy like ngnix or apache to deal with browser caching and other crucial things you want out of the box and not have to deal with them directly in your api
Upvotes: 1