利用静态文件的浏览器缓存

Leverage browser caching for the static files

我不确定,在 Golang 中,我们如何利用浏览器缓存来仅针对 CSSjs 之类的静态文件而不是 HTML 模板文件。

在 Apache 中使用 .htaccess,它曾经很容易,但我在 golang

中没有看到任何这样的东西

我想知道,我可以缓存静态文件的任何技巧或方法,例如 cssjs

不使用 cloudflare - 我的应用不适用于 cloudflare。

你使用 golang 的事实并不意味着你不能使用像 ngnix 或 apache 这样的反向代理来处理浏览器缓存和其他你想要开箱即用的重要事情,而不必直接在你的 api

浏览器缓存由服务器发送的 headers 控制。这样它不依赖于特定安装的软件。

您需要发送 headers EtagCache-Control。像这样

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
        }
    }
    ...
}

有用的链接: