The server compares the validator with the current resource tag.

highlighted = computed this step

The validator matches the current tag

The decision rows compare the request validator with the current resource tag.

validator equals current tag\text{validator equals current tag}
Compare the tagThe cache validation decision and response rows are recomputed from pinned data.Compare the tag - /logo.png validator "v7" -> 304 Not Modified, body 0 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/logo.pngparsedrequest lineversionHTTP/1.1parsedheaderHoststatic.exampleexactheaderIf-None-Match"v7"validatorresourcepath/logo.pngpinnedresourcecurrent ETag"v7"pinnedresourcebody bytes1280would send if changeddecisionvalidator"v7"from requestdecisioncurrent ETag"v7"from resourcedecisionmatchyessame tagdecisionresponse304 Not Modifiedskip bodydecisionsent body bytes0not sentstatusversionHTTP/1.1parsedstatusstatus304 Not Modifiednot modifiedheaderETag"v7"current tagheaderCache-Controlmax-age=60pinnedbodysent body bytes0skipped

The match row says yes

Because the tags match, the server can say the cached copy is still current.

match=yes\text{match}=\text{yes}
Compare the tagThe cache validation decision and response rows are recomputed from pinned data.Compare the tag - /logo.png validator "v7" -> 304 Not Modified, body 0 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/logo.pngparsedrequest lineversionHTTP/1.1parsedheaderHoststatic.exampleexactheaderIf-None-Match"v7"validatorresourcepath/logo.pngpinnedresourcecurrent ETag"v7"pinnedresourcebody bytes1280would send if changeddecisionvalidator"v7"from requestdecisioncurrent ETag"v7"from resourcedecisionmatchyessame tagdecisionresponse304 Not Modifiedskip bodydecisionsent body bytes0not sentstatusversionHTTP/1.1parsedstatusstatus304 Not Modifiednot modifiedheaderETag"v7"current tagheaderCache-Controlmax-age=60pinnedbodysent body bytes0skipped

The body length changes to zero sent bytes

The resource body length is 1280, but sent body length is 0.

128001280\to0
Compare the tagThe cache validation decision and response rows are recomputed from pinned data.Compare the tag - /logo.png validator "v7" -> 304 Not Modified, body 0 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/logo.pngparsedrequest lineversionHTTP/1.1parsedheaderHoststatic.exampleexactheaderIf-None-Match"v7"validatorresourcepath/logo.pngpinnedresourcecurrent ETag"v7"pinnedresourcebody bytes1280would send if changeddecisionvalidator"v7"from requestdecisioncurrent ETag"v7"from resourcedecisionmatchyessame tagdecisionresponse304 Not Modifiedskip bodydecisionsent body bytes0not sentstatusversionHTTP/1.1parsedstatusstatus304 Not Modifiednot modifiedheaderETag"v7"current tagheaderCache-Controlmax-age=60pinnedbodysent body bytes0skipped

Summary

A matching validator lets the server skip the body.

body skipped\text{body skipped}
Compare the tagThe cache validation decision and response rows are recomputed from pinned data.Compare the tag - /logo.png validator "v7" -> 304 Not Modified, body 0 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/logo.pngparsedrequest lineversionHTTP/1.1parsedheaderHoststatic.exampleexactheaderIf-None-Match"v7"validatorresourcepath/logo.pngpinnedresourcecurrent ETag"v7"pinnedresourcebody bytes1280would send if changeddecisionvalidator"v7"from requestdecisioncurrent ETag"v7"from resourcedecisionmatchyessame tagdecisionresponse304 Not Modifiedskip bodydecisionsent body bytes0not sentstatusversionHTTP/1.1parsedstatusstatus304 Not Modifiednot modifiedheaderETag"v7"current tagheaderCache-Controlmax-age=60pinnedbodysent body bytes0skipped