HTTPS缓存

栏目: 服务器 · 发布时间: 7年前

  • 强制缓存 当缓存数据库中已有所请求的数据时,客户端直接从数据库读取数据。当缓存数据库中没有所请求的数据时,客户端才会从服务端获取
HTTPS缓存
  • 协商缓存 客户端会先从缓存数据库中获取到一个缓存数据的标识,得到标识后请求服务端验证标识是否失效,如果没有失效服务端会返回304,此时客户端再从缓存中读取数据,如果失效,服务端会返回跟新的数据。

    HTTPS缓存
  • 强制缓存服务器响应的header中会用两个字段来表明-Expires和Cach-Control。

    • Expires的值为服务器数据到期时间,由于服务端的时间和客户端的时间有误差会导致缓存命中的误差。
    • Cache-Control
      • private:客户端可以缓存
      • public 客户端和代理服务器都可以缓存
      • max-age=t:缓存内容在t秒后失效
      • no-cache:需要使用协商缓存(服务器)来验证缓存数据
      • no-store:所有数据都不会缓存
  • 协商缓存是只需要对比是否可以进行缓存,浏览器第一次请求数据时,服务器会将缓存标识与数据一起响应给客户端,当浏览器再次请求时,客户端先将缓存标志发送给服务器,服务器根据此标识进行判断,若未失效返回304,流浪器可以使用缓存数据。接下了解下缓存标识

    • Last-Modified : 服务器在响应请求时,会告诉浏览器资源的最后修改时间。
    • if-Modified-Since: 浏览器再次请求数据时,会将请求头包含次字段,后面跟着在缓存中获得的最后修改时间。服务器发现有此字段时,和请求资源的最后修改时间进行比对。
      • 如果真被修改了那么开始响应一个整体,服务器返回:200 OK
      • 如果没有被修改只响应header,服务器返回304 NotModified
    • if-Unmodified-Since:从某个时间点算起,文件是否没有被修改
      • 如果没有被修改:则开始继续传输文件,服务器返回200
      • 如果文件被修改:则不传输,服务器返回:412 Precondition Faild(预处理错误)
    • Etag HTTP1.1推出的。服务器响应时,通过次字段告诉浏览器当前资源在服务器生成的唯一标识
      • If-None-Match:再次请求服务器时,浏览器的请求报文头部会包含此字段,后面的值为在缓存中获取的标识。服务器接收到次报文后发现If-None-Match则与被请求资源的唯一标识进行对比。
        • 不同,说明资源被改动过,则响应整个资源内容,返回状态码200
        • 相同,说明资源无心修改,则响应header,浏览器直接从缓存中获取数据信息。返回状态码304

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML Dog

HTML Dog

Patrick Griffiths / New Riders Press / 2006-11-22 / USD 49.99

For readers who want to design Web pages that load quickly, are easy to update, accessible to all, work on all browsers and can be quickly adapted to different media, this comprehensive guide represen......一起来看看 《HTML Dog》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具