Cache-Control (max-age, no-cache, no-store, private, public), ETag, Last-Modified. При повторном запросе клиент шлет If-None-Match (ETag) или If-Modified-Since; сервер отвечает 304 Not Modified при неизменности. В Go выставляют заголовки в ответе; для 304 сравнивают If-None-Match с текущим ETag и при совпадении пишут 304 без тела.
w.Header().Set("Cache-Control", "public, max-age=3600")
w.Header().Set("ETag", "\""+etag+"\"")
if r.Header.Get("If-None-Match") == "\""+etag+"\"" {
w.WriteHeader(304)
return
}