PageSourceSearch

https://www.yolo.blue/assets/js/ec4df19b.9fbb4f33.js

js yolo.blue collected 2026-10-01 14:01:33 UTC 7,601 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkyolo=self.webpackChunkyolo||[]).push([["3534"],{11824(e,t,n){n.r(t),n.d(t,{metadata:()=>r,default:()=>h,frontMatter:()=>o,contentTitle:()=>i,toc:()=>d,assets:()=>l});var r=JSON.parse('{"id":"notes/develop/web/http-etag-strong-vs-weak","title":"HTTP ETag \u7684\u5F3A\u5F31\u533A\u522B","description":"\u4E3A\u4EC0\u4E48\u8981\u533A\u5206\u5F3A\u5F31\u5462\uFF0C\u56E0\u4E3A\u5927\u591A\u6570\u60C5\u51B5\u4E0B\uFF0C\u786E\u4FDD\u4E25\u683C\u7684\u5B57\u8282\u7EA7\u522B\u7684\u4E00\u81F4\u6027\u662F\u6CA1\u6709\u5FC5\u8981\u7684\u3002","source":"@site/docs/notes/develop/web/http-etag-strong-vs-weak.mdx","sourceDirName":"notes/develop/web","slug":"/notes/develop/web/http-etag-strong-vs-weak","permalink":"/docs/notes/develop/web/http-etag-strong-vs-weak","draft":false,"unlisted":false,"tags":[{"inline":false,"label":"HTTP","permalink":"/docs/tags/http"}],"version":"current","lastUpdatedAt":1730018633000,"frontMatter":{"description":"\u4E3A\u4EC0\u4E48\u8981\u533A\u5206\u5F3A\u5F31\u5462\uFF0C\u56E0\u4E3A\u5927\u591A\u6570\u60C5\u51B5\u4E0B\uFF0C\u786E\u4FDD\u4E25\u683C\u7684\u5B57\u8282\u7EA7\u522B\u7684\u4E00\u81F4\u6027\u662F\u6CA1\u6709\u5FC5\u8981\u7684\u3002","tags":["http"]},"sidebar":"docsSidebar","previous":{"title":"VPS \u65B0\u624B\u4E0A\u8DEF","permalink":"/docs/notes/develop/vps-setup"},"next":{"title":"HTTP headers \u5206\u7C7B","permalink":"/docs/notes/develop/web/http-headers-classification"}}'),s=n(74848),a=n(28453);let o={description:"\u4E3A\u4EC0\u4E48\u8981\u533A\u5206\u5F3A\u5F31\u5462\uFF0C\u56E0\u4E3A\u5927\u591A\u6570\u60C5\u51B5\u4E0B\uFF0C\u786E\u4FDD\u4E25\u683C\u7684\u5B57\u8282\u7EA7\u522B\u7684\u4E00\u81F4\u6027\u662F\u6CA1\u6709\u5FC5\u8981\u7684\u3002",tags:["http"]},i="HTTP ETag \u7684\u5F3A\u5F31\u533A\u522B",l={},d=[{value:"ETag \u7528\u6CD5",id:"etag-\u7528\u6CD5",level:2},{value:"ETag \u5F3A\u5F31",id:"etag-\u5F3A\u5F31",level:2},{value:"\u5728 Spring Web MVC \u4E2D\u5B9E\u9645\u5E94\u7528",id:"\u5728-spring-web-mvc-\u4E2D\u5B9E\u9645\u5E94\u7528",level:2}];function c(e){let t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"http-etag-\u7684\u5F3A\u5F31\u533A\u522B",children:"HTTP ETag \u7684\u5F3A\u5F31\u533A\u522B"})}),"\n",(0,s.jsx)(t.h2,{id:"etag-\u7528\u6CD5",children:"ETag \u7528\u6CD5"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag",children:"ETag"})," \u662F ",(0,s.jsx)(t.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP",children:"HTTP"})," \u4E2D\u5E38\u7528\u7684\u7528\u4E8E\u534F\u5546\u7F13\u5B58\u7684\u8BF7\u6C42\u5934\uFF0C\u5B83\u4EE3\u8868\u4E00\u4E2A\u8D44\u6E90\u7684\u4E00\u4E2A\u7279\u5B9A\u7248\u672C\uFF0C\u5F53\u5BA2\u6237\u7AEF\u9996\u6B21\u8BF7\u6C42\u8BE5\u8D44\u6E90\u65F6\uFF0C\u670D\u52A1\u7AEF\u5728\u54CD\u5E94\u5934\u4E2D\u6DFB\u52A0 ",(0,s.jsx)(t.code,{children:'ETag: "xxx"'})," \u3002\u5F53\u5BA2\u6237\u7AEF\u518D\u6B21\u8BF7\u6C42\u8BE5\u8D44\u6E90\u65F6\uFF0C\u53EF\u5728\u8BF7\u6C42\u5934\u4E2D\u6DFB\u52A0 ",(0,s.jsx)(t.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match",children:"If-None-Match"}),': "xxx" \uFF0C\u670D\u52A1\u7AEF\u6536\u5230\u8BE5\u8BF7\u6C42\u540E\uFF0C\u518D\u6B21\u8BA1\u7B97\u8BE5\u8D44\u6E90\u7684 ETag \uFF0C\u5982\u679C\u4ECD\u65E7\u4E3A "xxx" \uFF0C\u5219\u65E0\u9700\u8FD4\u56DE\u8BE5\u8D44\u6E90\u7684\u5B8C\u6574\u54CD\u5E94\uFF0C\u53EA\u9700\u8FD4\u56DE ',(0,s.jsx)(t.a,{href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304",children:"304"})," \u54CD\u5E94\u5373\u53EF\uFF1B\u5982\u679C\u4E0D\u76F8\u540C\u4E86\uFF0C\u5219\u8FD4\u56DE\u65B0\u7684\u8D44\u6E90\u7684\u5B8C\u6574\u54CD\u5E94\uFF0C\u5E76\u518D\u6B21\u5E26\u4E0A\u65B0\u7684 ETag \u3002"]}),"\n",(0,s.jsx)(t.h2,{id:"etag-\u5F3A\u5F31",children:"ETag \u5F3A\u5F31"}),"\n",(0,s.jsxs)(t.p,{children:["\u6839\u636E ",(0,s.jsx)(t.a,{href:"https://www.rfc-editor.org/rfc/rfc7232#section-2.1",children:"RFC 7232, section 2.1."}),"\uFF0CETag \u5176\u5B9E\u6709\u4E24\u79CD\uFF1A"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:'ETag: W/"<etag_value>"\nETag: "<etag_value>"\n'})}),"\n",(0,s.jsxs)(t.p,{children:["\u7B2C\u4E00\u79CD\u662F\u5F31\u7684\uFF0C\u7B2C\u4E8C\u79CD\u662F\u6B63\u5E38\u7684\uFF08\u4E5F\u5C31\u662F\u5F3A\u7684\uFF09\u3002",(0,s.jsx)(t.code,{children:"W/"}),"\uFF08\u533A\u5206\u5927\u5C0F\u5199\uFF09\u5F00\u5934\u8868\u793A\u4F7F\u7528\u5F31\u6821\u9A8
1C\u3002\u5BF9\u4E8E\u4E24\u4E2A\u8D44\u6E90\uFF0C\u5F3A\u6821\u9A8C\u8981\u6C42\u6BCF\u4E2A\u5B57\u8282\u90FD\u76F8\u540C\u624D\u8BA4\u4E3A\u662F\u540C\u4E00\u4E2A\u8D44\u6E90\uFF1B\u800C\u5F31\u6821\u9A8C\u5219\u628A\u51B3\u5B9A\u6743\u4EA4\u7ED9\u5F00\u53D1\u8005\uFF0C\u6839\u636E\u9700\u8981\u533A\u5206\u7684\u8981\u7D20\u6765\u751F\u6210\u76F8\u5E94\u7684 ETag \u3002"]}),"\n",(0,s.jsx)(t.p,{children:"\u4E3A\u4EC0\u4E48\u8981\u533A\u5206\u5F3A\u5F31\u5462\uFF0C\u56E0\u4E3A\u5927\u591A\u6570\u60C5\u51B5\u4E0B\uFF0C\u786E\u4FDD\u4E25\u683C\u7684\u5B57\u8282\u7EA7\u522B\u7684\u4E00\u81F4\u6027\u662F\u6CA1\u6709\u5FC5\u8981\u7684\u3002\u4F8B\u5982\uFF0C\u5982\u679C\u6211\u4EEC\u5F00\u542F\u4E86 HTTP \u538B\u7F29\uFF0C\u90A3\u4E48\u5BF9\u4E8E\u4E00\u4E2A\u8D44\u6E90\u7684\u54CD\u5E94\uFF0C\u538B\u7F29\u524D\u548C\u538B\u7F29\u540E\u7684\u5B57\u8282\u5C31\u662F\u4E0D\u4E00\u81F4\u7684\uFF0C\u4F46\u901A\u5E38\u6211\u4EEC\u53EA\u5173\u5FC3\u538B\u7F29\u524D\u7684 ETag \uFF0C\u8FD9\u65F6\u5C31\u9700\u8981\u4F7F\u7528\u5F31\u6821\u9A8C\u7684 ETag \u3002"}),"\n",(0,s.jsx)(t.h2,{id:"\u5728-spring-web-mvc-\u4E2D\u5B9E\u9645\u5E94\u7528",children:"\u5728 Spring Web MVC \u4E2D\u5B9E\u9645\u5E94\u7528"}),"\n",(0,s.jsxs)(t.p,{children:["\u5728 ",(0,s.jsx)(t.a,{href:"https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc",children:"Spring Web MVC"})," \u4E2D\u6709\u4E00\u4E2A ",(0,s.jsx)(t.a,{href:"https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#filters-shallow-etag",children:"ShallowEtagHeaderFilter"})," \u53EF\u4EE5\u6821\u9A8C\u8BF7\u6C42\u7684 ETag \uFF0C\u4E3A\u54CD\u5E94\u751F\u6210 ETag \u3002\u5B83\u6709\u4E00\u4E2A ",(0,s.jsx)(t.code,{children:"writeWeakETag"})," \u53C2\u6570\uFF0C\u63A7\u5236 ETag \u7684\u5F3A\u5F31\u3002"]}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsxs)(t.p,{children:["\u5F53\u6211\u4EEC\u914D\u7F6E ",(0,s.jsx)(t.code,{children:"server.compression.enabled=true"})," \u5F00\u542F HTTP \u538B\u7F29\u540E\uFF0C\u5FC5\u987B\u8BBE\u7F6E ",(0,s.jsx)(t.code,{children:"writeWeakETag"})," \u4E3A ",(0,s.jsx)(t.code,{children:"true"})," \u4F7F\u7528\u5F31\u6821\u9A8C ETag \u538B\u7F29\u624D\u80FD\u751F\u6548\u3002\u56E0\u4E3A ETag \u662F\u5728\u538B\u7F29\u4E4B\u524D\u751F\u6210\u7684\uFF0C\u5982\u679C\u4F7F\u7528\u7684\u662F\u5F3A\u6821\u9A8C ETag \uFF0CSpring \u5C31\u4E0D\u4F1A\u518D\u8FDB\u884C\u538B\u7F29\uFF0C\u4FDD\u8BC1 ETag \u7684\u4E00\u81F4\u6027\u3002"]})})]})}function h(e={}){let{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453(e,t,n){n.d(t,{R:()=>o,x:()=>i});var r=n(96540);let s={},a=r.createContext(s);function o(e){let t=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.