美文网首页HTTP协议原理+实践
3-5 缓存验证Last-Modified和Etag的使用

3-5 缓存验证Last-Modified和Etag的使用

作者: 伯纳乌的追风少年 | 来源:发表于2018-12-04 09:30 被阅读0次

    当服务端设置了Cache-Control值为no-cache时,当浏览器发起请求时,都需要到服务端进行资源的验证。验证完成后如果确定服务端可以使用缓存,才会读取本地的缓存。


    缓存操作流程

    last-Modified

    last-Modified

    Etag

    Etag


    demo

    const http=require('http');
    const fs=require('fs')
    http.createServer(function(request,response){
      if (request.url==='/') {
        const html=fs.readFileSync('test.html','utf8')
        response.writeHead(200,{
          'Content-Type':'text/html'
        })
        response.end(html)  
      };
      if (request.url==='/script.js') {
        const etag=request.headers['if-none-match']
        if (etag==='777') {
          response.writeHead(304,{
            'Content-Type':'text/javascript',
            'Cache-Control':'max-age=30000000,no-cache',
            'Last-Modified':'123',
            'Etag':'777'
          })
          response.end('')  
        }else{
          response.writeHead(200,{
            'Content-Type':'text/javascript',
            'Cache-Control':'max-age=30000000,no-cache',
            'Last-Modified':'123',
            'Etag':'777'
          })
          response.end('console.log("script loaded!")')  
        }
      };
    }).listen(8888)
    console.log('server listening on 8888')
    
    第一次加载携带了Etag值
    第二次加载为304,意味着是从缓存中读取的


    总结

    Cache-control:nocache 可以在发起端缓存但要在服务端进行验证是否可以缓存
    last-modified:上次修改时间
    if-modified-since
    in-unmodified-since
    服务器读取这两个值,看资源是否重新修改,服务器告诉客户端是否可以用缓存的资源
    
    etag
    数据签名
    数据修改,资源的数据签名就会修改
    例如hash
    两个属性:
    if-match
    if-non-match
    里面放的etag值,对比服务端和客户端判断是否使用缓存
    
    304 
    如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。简单的表达就是:客户端已经执行了GET,但文件未变化。
    
    
    no-store
    没有缓存
    
    
    设置了etag、last-modified后,浏览器在第二次发起请求后就会把if-none-match和if-modified-since带上
    
    
    

    相关文章

      网友评论

        本文标题:3-5 缓存验证Last-Modified和Etag的使用

        本文链接:https://www.haomeiwen.com/subject/lwagqqtx.html