淘先锋技术网

首页 1 2 3 4 5 6 7

浏览器访问资源时有三种情况:

  1. 第一次访问该资源,直接发送请求给服务器,服务器发送资源给浏览器
  2. 不是第一次访问,并且浏览器中该资源还未失效,直接访问浏览器中的资源——称为强缓存
  3. 不是第一次访问,并且浏览器中该资源已失效,发送请求到服务器,判断该资源在服务器中是否已修改:
    若未修改,则继续使用浏览器中的资源
    若已修改,则服务器发送新的资源到服务器

几个重要的参数

在这里插入图片描述

  • cache-control: 包含在响应报文中,记录资源的有效时间——相对时间,单位为秒
  • expires: 包含在响应报文中,记录资源的有效时间——格林尼治时间即绝对时间优先级:cache-control高于expires,因此expires大部分情况下没什么作用,可以忽视
  • last-modified: 包含在响应报文中,记录文件在服务器中的最后修改时间——格林尼治时间即绝对时间
  • if-modified-since: 包含在请求报文中,将浏览器中记录的该资源的last-modified的值填进去,用于校验与服务器中资源最后修改时间是否相同——格林尼治时间即绝对时间

浏览器访问资源具体过程

在这里插入图片描述
304:表示文件内容没有修改过,最后修改时间一致

特殊情况:文件最后修改时间改变了,但文件实际内容没有改变

使用两个参数Etagif-None-Match,Etag是基于文件内容生成的哈希值,独一无二,if-None-Match是浏览器中储存的Etag值,用于校验与服务器中的文件内容的Etag值是否相同
在这里插入图片描述