内容分发的最佳做法

本页面介绍使用 Cloud CDN 优化和加速内容分发的最佳做法。

Cloud CDN 使用 HTTP(S) 负载平衡作为可缓存内容的来源。HTTP(S) 负载平衡器可以通过一个全局 IP 地址,从 Google Compute Engine 虚拟机实例组和/或 Google Cloud Storage 存储分区向用户分发静态内容和动态创建的内容。

由于与 Google Cloud Platform 的无缝集成,您可以通过多种方式部署 Cloud CDN 和管理内容。请使用此处列出的最佳做法来计划和优化您的部署。如需了解详情,请参阅使用 Cloud CDN

为时间敏感内容设置过期时间

Cloud CDN 缓存中的每个内容都有一个关联的过期时间,请务必设置适合您的用例的过期时间。由于源服务器必须重新发送缓存服务器上过期的内容,您需要谨慎选择过期时间。

要选择过期时间,一种方法是根据您更新内容的频率对内容进行分类,例如:

  1. 近乎实时的更新,例如体育赛事或流量的实时内容源
  2. 频繁的更新,例如每周、每日或每小时的天气信息或头版新闻图片
  3. 不频繁的更新,例如网站徽标或者 CSS 或 JavaScript 文件

然后,按内容类别选择过期日期。例如,5 秒的过期时间可能适用于近乎实时的体育赛事比分,一小时的过期时间则可用于天气动态。对于存储在 Cloud Storage 中的内容,请使用自定义元数据设置过期时间。内容由 Compute Engine 传送时,您可以通过配置网络服务器软件来控制过期时间。

过期时间由 Cache-Control 标头中的 max-ages-maxage 值指定。此标头由 HTTP 规范定义。例如,以下 Cache-Control 使相关内容可被公开读取并缓存,缓存的过期时间为 72 小时(259200 秒):

 Cache-Control: public, max-age=259200

要最大程度增加缓存,请按照缓存详情中的准则进行操作。请记住,Cache-Control 元数据字段中的 max-ages-maxage 值通过下列方式开展协作:

  • max-ages-maxage 值以秒为单位。
  • s-maxage 值仅适用于共享缓存,而不适用于浏览器缓存。
  • max-age 值适用于所有缓存(除非 s-maxage 将它替换)。

对于频繁更改的内容或必须随相关内容一起更改的内容,建议您结合使用较长的过期时间以及具有版本控制的网址

使用自定义缓存键来提高缓存命中率

默认情况下,Cloud CDN 使用完整的请求网址来构建缓存键。为了提高性能和可伸缩性,您必须优化缓存命中率。为了优化缓存命中率,您可以使用自定义缓存键

Cloud CDN 键值存储区
Cloud CDN 键值存储区

您可以自定义缓存键以包含或省略协议、主机或查询字符串中的其中一项或多项。例如,假设您在不同的域上有两个网站,这两个网站使用相同的徽标。要显示徽标,请使用自定义缓存键,如下所示:

  • 网站内容不同,但您在两个域中使用相同的公司徽标。当您为拥有该徽标的后端服务开启 Cloud CDN 并自定义缓存键时,请取消选中主机复选框,这样一来,缓存会忽略该网域,但会缓存该徽标。
  • 无论是通过 HTTP 还是 HTTPS 显示徽标,都需要对该徽标进行缓存。当您为拥有该徽标的后端服务自定义缓存键时,请取消选中协议复选框,使得通过 HTTP 和 HTTPS 传送的请求被统计为徽标缓存条目的匹配项。

要了解如何自定义缓存键,请参阅使用缓存键

使用具有版本控制的网址更新内容

通过对内容进行版本控制,您可以传送同一内容的不同版本,这样一来,您可以在缓存条目过期之前向用户显示新内容,并有效地移除旧内容。由于版本控制功能简单易用且不收取任何费用,我们建议您使用版本控制功能作为更新缓存内容的默认方法。要对内容进行版本控制,请在网址中添加一个参数,例如版本号。您可以通过多种方法在网址中包含参数,例如:

  • 添加查询字符串:file.ext?v=100
  • 更改文件名:file.1.0.0.ext or file_v100.ext
  • 更改文件路径:/v100/file.ext

当您添加参数时,您将更改文件的名称和网址。此更改会强制缓存忽略所有现有缓存条目。

谨慎使用失效操作来移除内容

在缓存条目过期之前,失效操作会从 Cloud CDN 分布式缓存服务器中移除内容。失效操作具有最终一致性。

我们建议您谨慎使用失效操作,您只能将此操作用作最后的补救手段。例如,当您因法律原因或意外上传而必须移除内容时,失效操作十分有用。其他情况下,我们建议您尽可能使用版本控制功能,或等待内容正常到期。Cloud CDN 缓存服务器通常会逐出不常访问的内容,以便为新内容腾出空间。如果某项内容未被访问的时间达到 30 天,系统会无条件将其删除。

设置过期时间使用具有版本控制的网址不同,您需要为每次启动的缓存失效操作付费,并且缓存失效操作的速率存在限制

要详细了解失效操作,请参阅缓存失效操作概览

查看第三方性能测试

查看来自第三方提供商的报告,例如 Cedexis Radar 社区提供的可用性、延迟和吞吐量报告

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud CDN 文档