美文网首页
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缓存

    此篇简单介绍web浏览器缓存的过程(304) 浏览器第一次访问Url,向服务器发送请求报头(HTTP Reques...

  • MS-缓存

    在web世界,理论上每一层都可以缓存,以PHP为例: 底层有CPU缓存,磁盘文件系统缓存 应用层有Zend虚拟机缓...

  • Web缓存与策略

    Web缓存定义 Web缓存(或HTTP缓存)是用于临时存储(缓存)Web文档(如HTML页面和图像),以减少服务器...

  • Nginx 代理缓存

    Nginx的缓存可以简单分成web缓存和代理缓存,本篇文章主要介绍代理缓存。 web缓存 Nginx提供了expi...

  • HTTP缓存机制 & cookie/localStorage/s

    web缓存大致可以分为:数据库数据缓存、服务器端缓存(代理服务器缓存、CDN缓存)、浏览器端缓存、web应用层缓存...

  • <HTTP权威指南>读书笔记 ---- Web缓

    Web缓存 Web 缓存是可以自动保存常见文档副本的HTTP设备。当Web请求抵达缓存时,如果本地有“已缓存的”副...

  • SpringBoot缓存

    缓存三问 ??? 什么是缓存?客户端缓存代理缓存反向代理缓存Web服务器端缓存详细参考:https://blog....

  • Web 缓存

    Web 缓存的作用与类型 数据库缓存memcached redis 服务端缓存代理服务器缓存squidCDN缓存(...

  • HTTP缓存机制

    web缓存分为:数据库缓存、服务器缓存(代理服务器、cdn缓存)、浏览器缓存浏览器缓存分为:http缓存、inde...

  • HTTP 缓存控制

    Web 缓存 数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器(HTTP)缓存 浏览器缓存(本地储...

网友评论

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

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