美文网首页
HTTP Cache

HTTP Cache

作者: 李桐2000 | 来源:发表于2020-05-30 23:04 被阅读0次

    本文为web开发系列的一部分。

    HTTP协议的Cache机制

    HTTP协议提供Cache机制,当相应数据没有变化时,不会返回数据,减少网络带宽使用。

    它主要包含

    1. HTTP头中Cache-Control相关定义

    2. 客户端如何使用Cache-Control和服务端通信,并进行相应操作。

    3. 服务端如何使用Cache-Control和客户端通信,并进行相应操作。

    目前主流浏览器都支持HTTP Cache,这意味着只要在服务端实现相关操作,web系统就能够使用HTTP Cache。

    推荐实现

    下面提供一个推荐方案,它能够实现

    1. 如果服务端的响应数据没有变化,则不消耗网络带宽(只返回一个状态码),浏览器使用本地缓存数据。

    2. 如果服务端的响应数据发生变化,则返回最新数据,浏览器更新本地缓存数据。

    主要步骤为

    1. 对于GET方法,服务器在响应头中增加Cache-Control:private, no-cacheEtag:<data-token>
      private:表示本次请求返回的cache只对此请求者可见。
      no-cache:表示浏览器能够cache响应,但在使用前必须验证。
      <data-token>: 一般是字符串,对应返回数据的唯一标识。推荐使用返回数据的checksum值,例如MD5 hash值。

    2. 浏览器接受返回结果,缓存返回结果和Etag

    3. 浏览器再次以GET方法请求此URL时,会在请求头中增加If-None-Match: <data-token>,表示需要验证此cache是否有效

    4. 服务器验证结果是否发生变化(采用相同的checksum算法),如果<data-token>值一致,则返回304,如果<data-token>发生变化,则返回200,并在响应头中增加Cache-Control:private, no-cacheEtag:<data-token>

    5. 浏览器如果收到304状态码,则使用步骤2中缓存的响应结果,如果收到200状态码,则会更新结果缓存和Etag。

    参考资料

    更多内容请查看web开发系列

    相关文章

      网友评论

          本文标题:HTTP Cache

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