# Http cache ETag ###### tags: `HTTP` `Cache` `Java` `ETag` https://blog.othree.net/log/2012/12/22/cache-control-and-etag/ https://medium.com/frochu/http-caching-3382037ab06f ## 注意 因為瀏覽器通常都有會設定,accept-encoding: gzip, deflate, br 所以 If-None-Match 會帶有 W/ weak驗證的方式 Response Header ``` cache-control: max-age=0 cf-cache-status: DYNAMIC cf-ray: 5466bc15f90cd376-LAX content-encoding: br content-type: application/json;charset=utf-8 date: Tue, 17 Dec 2019 06:10:35 GMT etag: W/"b3b38875bbc3855cb49bb068befdb0a84122b97d4b66f613208a12ef5e63ec34" expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" server: cloudflare status: 20055cb49bb068befdb0a84122b97d4b66f613208a12ef5e63ec34" ``` ## java 範例 ``` String eTagFromBrowser = req.getHeader("If-None-Match"); String etag = getEtag(res_arr.toString()); if (eTagFromBrowser != null && eTagFromBrowser.equals(etag)) { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); return; } resp.addHeader("ETag", etag); ... public String getEtag(String str) { return "W/\"" + Mytools.toSHA256(str) + "\""; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up