美文网首页
MS-缓存-Web缓存

MS-缓存-Web缓存

作者: Captain_tu | 来源:发表于2019-01-14 15:07 被阅读12次

    此篇简单介绍web浏览器缓存的过程(304)

    1. 浏览器第一次访问Url,向服务器发送请求报头(HTTP Request Header),服务器响应同时记录相关属性标记(HTTP Response Header),其中状态码为200。

       HTTP/1.1 200 OK
       Date: Mon, 14 Jan 2019 06:04:10 GMT    
       Content-Type: image/jpeg        # 响应类型为image/jpeg
       Content-Length: 83185             # 响应大小为83185
       Cache-Control: max-age=3600  # 从请求时间开始到过期时间之间的秒数
       Expires: Mon, 14 Jan 2019 07:04:10 GMT  # 缓存过期时间
       Etag: "5d8c72a5edda8d6a:3239"  # 服务器生成的唯一标志符
      
    2. 浏览器第二次请求此url时,向服务器发送请求报头,服务器响应请求,但是发现标记文件没有发生改动,于是服务器返回304。
      浏览器收到此状态码之后,直接从浏览器缓存中读取。

       HTTP/1.x 304 Not Modified
       Date: Mon, 14 Jan 2019 05:03:56 GMT
       Content-Type: image/jpeg
       Content-Length: 83185
       Last-Modified: Sun, 13 Jan 2019 08:01:04 GMT
       Cache-Control:max-age=3600
       Expires: Thu, 02 Apr 2019 05:14:08 GMT
       Etag:"5d8c72a5edda8d6a:3239"
      

      字段解读:

      • Expires
        Expires(过期时间)是控制缓存的基本手段,告诉缓存器,副本在什么时间范围是新鲜的,过了这个时间,缓存器应该向服务器发送请求,检查文档是否发生修改。

        Expires对静态资源特别有效,可以在Nginx等web服务器设置很长的过期时间(这个时间必须是格林威治时间GMT,中国处于东八区,时间为GMT+8)

      • Cache Control
        通过这个属性可以让内容发布者全面控制内容,定位过期时间的限制。
        Cache Control的值可以为:

        • max-age=[秒]: 缓存过期时间,是基于请求时间的相对间隔,单位为秒
        • public:标记认证的内容也可以被缓存。一般上需要认证才能访问的内容,默认是不缓存的。
        • no-cache:强制每次请求都直接发送到源服务器,不经过本地缓存。
        • no-store:强制任何情况下都不留下缓存副本。
        • must-revalidate:声明请求的资源,如果在过期时间之内,且声明了资源的修改时间或者ETag之类的标志,是否应当向服务器确认资源是否是最新的。如果使用了这个属性,则每次都必须向服务器确认。
        • last-modified:文档最后修改时间
          浏览器第一次请求时,服务器在响应头返回这个字段 last-modified: Sun, 13 Jan 2019 08:01:04 GMT,标明文档上次修改时间。
          第二次请求时,请求头加上 if-modified-since: Sun, 13 Jan 2019 08:01:04 GMT,服务器可以根据这个时间判断文档是否在这个时间之后发生变更。
      • ETag
        简单说就是,服务器响应时给请求的url标记,并在HTTP响应头中将其发送给客户端,例如etag: W/"3189a0471d72d02f2c1d8edc023afed0"
        服务端再次请求时,在请求头加上 if-none-match: W/"3189a0471d72d02f2c1d8edc023afed0"
        如果etag没有发生变化,服务器直接返回304

    相关文章

      网友评论

          本文标题:MS-缓存-Web缓存

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