缓存验证Last-Modified和Etag的使用
Posted ladybug7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存验证Last-Modified和Etag的使用相关的知识,希望对你有一定的参考价值。
缓存工作示意图:
在http协议里面,数据的验证方式,主要有两个验证头:Last-Modified 和 Etag。
Last-Modified 配合Last-Modified-Since或者If-Unmodified-Since使用,对比上次修改的时间验证资源是否需要更新。
Etag 是一个更加严格的数据验证。数据签名[根据数据的内容进行签名,如果数据内容变了,Etag也会变],最典型
的Etag数据签名就是hash计算。配合If-Match或者If-Non-Match使用,对比资源的签名判断是否使用缓存。
if (request.url === ‘/script.js‘) { response.writeHead(200, { ‘Content-Type‘: ‘text/javascript‘, ‘Cache-Control‘: ‘max-age=200000, no-cache‘, ‘Last-Modified‘: ‘123‘, ‘Etag‘: ‘777‘ }) const etag = request.headers[‘if-none-match‘]if (etag === ‘777‘) { response.writeHead(304, { // 304 表示内容没有变 ‘Content-Type‘: ‘text/javascript‘, ‘Cache-Control‘: ‘max-age=200000, no-cache‘, ‘Last-Modified‘: ‘123‘, ‘Etag‘: ‘777‘ }) response.end(‘‘) } else { response.writeHead(200, { ‘Content-Type‘: ‘text/javascript‘, ‘Cache-Control‘: ‘max-age=200000, no-cache‘, ‘Last-Modified‘: ‘123‘, ‘Etag‘: ‘777‘ }) response.end(‘console.log("script loaded twice")‘) }
以上是关于缓存验证Last-Modified和Etag的使用的主要内容,如果未能解决你的问题,请参考以下文章
利用浏览器缓存 - expires 或 max-age, last-modified 或 etag
Http头介绍:Expires,Cache-Control,Last-Modified,ETag
浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
浏览器缓存之Expires Etag Last-Modified max-age详解