IBM Cloud Docs
高速缓存概念

高速缓存概念

本文档包含一些与缓存有关的概念和定义,以及缓存如何影响您的IBM Cloud® Internet Services部署。

什么是高速缓存?

高速缓存是在边缘服务器上存储文件的过程,这是为了缩短响应时间以将这些文件提供给客户。 通过将文件存储在离客户更近的地方,可以减少数据流通过网络所需的时间,也就是通常所说的_延迟_。

缓存文件有一个指定的过期时间,称为 "Time-to-live(TTL)",过期后将从缓存中清除。 也可以手动清除缓存中的文件。 从高速缓存除去文件后,CIS 将返回到源服务器以重新装入这些文件,并使用最新版本更新高速缓存。

高速缓存设置和高速缓存选项的更深入说明位于 高速缓存和页面规则 部分。

高速缓存的内容

默认情况下,CIS会缓存静态文件,其中包括多种类型的图像和文本文件(非 HTML 文件)。 例如,高速缓存仅包含来自 Web 站点的文件,而不包含来自社交网站的第三方资源。 另外,CIS 当前未按 MIME 类型进行高速缓存。

高速缓存 HTML

缺省情况下,CIS 不会对 HTML 文件进行高速缓存,因为它们不会被视为静态文件。 但是,如果可以明确区分静态 HTML 与动态 HTML,那么可以通过 使用 "页面规则" 功能 对 HTML 文件进行高速缓存。

缺省高速缓存行为

CIS 根据访问者来自的位置以及访问者访问的 CIS 数据中心以及访问者在特定数据中心请求资源的频率对静态内容进行高速缓存。

CIS 仅高速缓存 CIS 数据中心内为请求提供服务且不高速缓存以下资源的资源:

  • 非现场资源或第三方资源 (例如,Facebook 和 Flickr)
  • 托管在非代理 DNS 记录上的内容

缺省情况下,CIS 采用以下方式来处理源 Web 服务器的高速缓存头,除非被边缘高速缓存 TTL 页面规则覆盖:

  • 如果 cache-control 标头设置为 privateno-storeno-cachemax-age=0,或者响应中包含 cookie,则CIS不会缓存资源。
  • 否则,如果 cache-control 设置为 public 并且 max-age 大于 0,或者如果 expires 头是将来的日期,那么 CIS 会高速缓存资源。
  • 如果同时设置了 max-ageexpires 头,那么将使用 max-age

默认情况下,当没有 cache-control 指令或 expires 响应头时,CIS 会使用以下边缘缓存 TTL 来缓存某些 HTTP 响应代码:

默认缓存响应代码
响应代码 TTL
200, 206, 301 120 米
302, 303 20 m
404, 410 3 分钟
403 1 分钟

CIS 提供了多个高速缓存定制选项:

  • 使用 CIS 页面规则指定各个 URL 的高速缓存行为
  • 使用 CIS 边缘函数API 定制高速缓存
  • 通过 CIS CLI 调整高速缓存级别和高速缓存 TTL 等

对于 Trial 和 Standard Next 客户,CIS 高速缓存的最大文件大小为 512 MB,对于 Enterprise 客户,最大文件大小为 5 GB。 企业客户可以打开支持案例以请求对更大的文件进行高速缓存。

缺省情况下高速缓存的文件扩展名

CIS 使用文件扩展名来高速缓存内容。 将自动高速缓存以下文件扩展名:

  • bmp
  • class
  • css
  • csv
  • doc
  • docx
  • ejs
  • eot
  • eps
  • gif
  • ico
  • jar
  • jpg
  • js
  • mid
  • midi
  • otf
  • pdf
  • pict
  • pls
  • png
  • ppt
  • pptx
  • ps
  • svg
  • svgz
  • swf
  • tif
  • tiff
  • ttf
  • webp
  • woff
  • woff2
  • xls
  • xlsx

CIS 不会按 MIME 类型进行高速缓存,并且缺省情况下不会高速缓存 HTML。CIS 对 Web 站点的 robots.txt 进行高速缓存。 您可以通过创建页面规则来高速缓存更多内容。

了解 CIS 高速缓存响应

CF-Cache-Status 头的输出显示是否对资源进行了高速缓存。

缓存响应代码和定义
响应代码 定义
命中 在 CIS 高速缓存中找到了资源。
小姐 在 CIS 高速缓存中找不到该资源,并且该资源是从源 Web 服务器提供的。
到期 资源已找到高速缓存,但已到期,并且已从源 Web 服务器提供服务。
旧文件 已从高速缓存提供资源,但该资源已到期。CIS 无法联系源以检索更新的资源。
绕过 源服务器指示 CIS 使用设置为 no-cacheprivatemax-age=0cache-control 头来绕过高速缓存。 当您启用源高速缓存控制时,将返回旁路。当源 Web 服务器在响应头中发送 cookie 时,CIS 也会设置旁路。
已重新验证 资源是从高速缓存提供的,但它是旧的。 资源已由 If-Modified-Since 头或 If-None-Match header 重新验证。
正在更新 已从高速缓存提供资源,但该资源已到期。 源 Web 服务器正在更新资源。 通常仅对于常用高速缓存资源才会看到正在更新。
动态 缺省情况下未对资源进行高速缓存,并且当前 CIS 高速缓存配置不会指示 CIS 对资源进行高速缓存。 而是从源 Web 服务器请求资源。 使用页面规则来实现定制高速缓存选项。

使用查询字符串排序

仅限企业:CIS 将具有不同顺序的查询字符串的 URL 视为高速缓存中的单独文件。 这意味着,如果一个用户请求以下内容:

/video/123456?title=0&byline=0&portrait=0&color=987654

而另一个用户请求以下内容:

/video/123456?byline=0&color=987654&portrait=0&title=0

CIS 将返回到源,尽管在高速缓存中有该文件。

查询字符串排序会对查询字符串进行排序_之前_它们会进入我们的缓存,从而提高缓存命中率。 使用缓存页面中的切换按钮启用查询字符串排序。

提供旧内容

如果服务器宕机,则提供过期内容,使有限版本的网站保持在线。 即使内容过期,CIS也会在源服务器离线时继续向用户提供缓存内容。