关于 HTTP 响应头部字段 X-Cache-Akamai

笔者的一套适合 SAP UI5 开发人员循序渐进的学习教程里介绍了 SAP UI5 应用的开发步骤,运行这些应用后,在 Chrome 开发者工具 Network 面板里观察到一个请求的 Response Header 字段名称为 X-Cache-Akamai,值为 head,这代表 Akamai 内容分发网络(Content Delivery Network,CDN)的缓存状态信息。

本文详细解释这个 HTTP 头部字段的含义,并通过举例来说明。

  1. Akamai 内容分发网络(CDN)简介:
    Akamai 是一家全球领先的 CDN 提供商,它拥有分布在全球各地的服务器网络,用于存储和传送网站的内容。当用户访问启用了 Akamai CDN 的网站时,请求会被转发到距离用户最近的 Akamai 服务器,从而加快内容传输速度,提高网站性能和可靠性。
  2. Response Header 中的 X-Cache-Akamai 字段:
    当网站启用了 Akamai CDN 服务时,Akamai 服务器会在 HTTP 响应头部(Response Header)中添加一个名为 X-Cache-Akamai 的字段,用于提供有关请求的缓存状态的信息。
  3. X-Cache-Akamai 字段的值:
    X-Cache-Akamai 字段的值描述了 Akamai 服务器对于当前请求所采取的缓存处理方式。在你的例子中,字段值为 head,它是 Akamai 使用的一种缓存标记,用于表示此请求的响应头部已被缓存,但响应体尚未被缓存。

举例说明:
假设有一个名为 example.com 的网站启用了 Akamai CDN,并且用户在浏览器中输入网址 "http://example.com" 并访问该网站。

  1. 第一次访问:
  2. 用户首次访问该网站,浏览器发送一个请求到 example.com 的服务器。
  3. 由于这是用户首次访问,Akamai 服务器尚未缓存该网站的内容。
  4. 服务器将响应头部返回给浏览器,并在其中添加 X-Cache-Akamai: miss,表示此请求的响应头部没有被缓存(miss 表示未命中缓存)。
HTTP/1.1 200 OK
Date: Wed, 27 Jul 2023 12:00:00 GMT
Server: Apache
X-Cache-Akamai: miss
  1. 第二次访问:
  2. 用户再次访问 "http://example.com"。
  3. 此时,Akamai 服务器已经缓存了上一次请求的响应头部。
  4. 服务器在响应头部中添加 X-Cache-Akamai: hit,表示此请求的响应头部已经被缓存(hit 表示命中缓存)。
HTTP/1.1 200 OK
Date: Wed, 27 Jul 2023 12:05:00 GMT
Server: Apache
X-Cache-Akamai: hit
  1. 部分内容更新:
  2. 现在,"example.com" 网站的某些内容发生了更新,例如首页的一幅图片。
  3. 用户再次访问 "http://example.com",浏览器发送请求到 Akamai 服务器。
  4. 由于响应头部通常不会频繁变动,Akamai 服务器仍然使用缓存的响应头部,因此仍然返回 X-Cache-Akamai: hit
  5. 然而,由于响应体发生了变化,Akamai 服务器将在响应体中返回新的图片内容,并在响应头部中添加 X-Cache-Akamai: fresh,表示响应体是新鲜的,因为它已经被更新。
HTTP/1.1 200 OK
Date: Wed, 27 Jul 2023 12:10:00 GMT
Server: Apache
X-Cache-Akamai: hit
  1. 强制刷新:
  2. 用户在浏览器中执行了强制刷新,或者按下了 Ctrl + F5 键,意图跳过缓存,获取最新的内容。
  3. 浏览器发送一个带有 Cache-Control: no-cache 请求头的请求到 Akamai 服务器。
  4. Akamai 服务器无视缓存,并向 example.com 的源服务器请求最新内容。
  5. 服务器返回全新的内容,并在响应头部中添加 X-Cache-Akamai: fresh
GET / HTTP/1.1
Host: example.com
Cache-Control: no-cache

HTTP/1.1 200 OK
Date: Wed, 27 Jul 2023 12:15:00 GMT
Server: Apache
X-Cache-Akamai: fresh

总结

当你在 Chrome 开发者工具的 Network 面板中看到一个请求的 Response Header 字段 X-Cache-Akamai 的值为 head 时,这表示 Akamai CDN 已经缓存了该请求的响应头部,但响应体可能没有被缓存。这个机制允许 Akamai CDN 更有效地处理请求,提高网站性能,并且在必要时通过请求源服务器以获取最新内容。

你可能感兴趣的:(关于 HTTP 响应头部字段 X-Cache-Akamai)