自定义和管理 CDN 行为

已完成

CDN 可提高静态网站的性能。 对于全球培训公司来说,需要让受众能轻松地访问你的内容,还要保证内容是最新的。 在本单元,学习如何进行其他配置更改,让 CDN 能适当地处理生产环境中的静态站点。

使用自定义域

在演练中,你了解了 CDN 如何获取格式为 endpointname.azureedge.net 的唯一 URL。 无论用户在世界上哪个位置,该 URL 都指向距离最近的 POP,从而提高性能。 虽然此方法效果很好,但 URL 不容易让人记住,而且没反映出公司的品牌。

通过设置自定义域,可在域名系统 (DNS) 中指定一个指向 CDN URL 的规范名称 (CNAME) 记录。 假设用户键入自定义域名,例如 www.contoso.com。 DNS 会将该域名映射到 POP 终结点 URL,并将用户连接到该 URL。

创建 CNAME DNS 记录

要进行自定义域映射,首先需要在 DNS 中创建 CNAME 记录。 映射方式取决于 DNS 提供商实现的接口。 但是,需要配置的是采用下列格式的记录:

地址(左侧字段) 类型 指向(右侧字段)
[www.contoso.com](www.contoso.com) CNAME endpointname.azureedge.net.

DNS 最多需要 72 小时来完成更新。

映射临时的 cdnverify 子域

可配置 CNAME 记录,并在 Web 服务器尚未联机时发布该记录。 但是,在设置 CDN 记录时,不应中断用户。 如果你的域已在生产中并指向源服务器,则设置 CDN 记录而不中断用户就非常重要。 CNAME 记录应指向 cdnverify 子域。 此情况下,该记录的格式将如下所示:

地址(左侧字段) 类型 指向(右侧字段)
cdnverify.www.contoso.com CNAME cdnverify.contoso.azureedge.net.

通常,在配置此记录时会有 1 小时的生存时间 (TTL)。

配置好 cdnverify 子域和用于域映射的 CNAME 后,即可添加自定义域。

添加自定义域

若要添加自定义域,请转到所创建的 CDN 终结点,然后在“设置”下选择“自定义域”。 在“自定义域”窗格中,选择“自定义域”,然后在“添加自定义域”中的“自定义主机名”下,输入与自己的自定义域中的 CNAME 记录匹配的主机名,例如 www.contoso.com

Screenshot of add a custom domain page for a CDN profile.

输入自定义域名时,Azure 将使用 DNS 来尝试将地址解析为终结点主机名。 如果两者匹配,“自定义主机名”字段旁将显示一个对勾。 如果显示红色的感叹号,则应检查 DNS 设置。

如果自定义域名解析为终结点主机名,请选择“添加”。 现在,转到 www.contoso.com 的所有用户都将被重定向到最靠近他们的 Azure POP。

压缩文件

Azure CDN 可通过在传递文件之前对它们进行压缩来提高性能。 接收浏览器会解压缩文件。 此活动的应用方式取决于文件一开始是否在源服务器上进行了压缩。

Screenshot of the compression settings page for a CDN profile.

如果对源服务器上托管的文件启用了压缩,则 Azure CDN 会传递未经更改的压缩文件。 Azure CDN 会对源服务器上可压缩的未压缩文件进行动态压缩, 然后将压缩文件存储在 POP 上。 此过程可改善用户体验和站点性能。

Microsoft 的 Azure CDN 标准中默认启用了压缩功能。 无法配置其他文件类型来压缩或删除现有的文件类型。 但是,可以添加和修改文件类型以在 Edgio 配置文件中进行压缩。

控制缓存行为

Azure CDN 提供两种文件缓存机制。 但是,这些配置设置取决于所选的层。 Microsoft 的 Azure CDN 标准中的缓存规则是在终结点级别设置的,提供 3 种配置选项。 其他层级提供更多配置选项,其中包括:

  • 缓存规则。 缓存规则可以是全局的(应用于指定终结点中的所有内容),也可是自定义的。 自定义规则应用于特定的路径和文件扩展名。
  • 查询字符串缓存。 通过查询字符串缓存,可配置 Azure CDN 响应查询字符串的方式。 查询字符串缓存对无法缓存的文件没有任何影响。

使用 Microsoft 的 Azure CDN 标准层级时,缓存规则就像以下三个选项一样简单:

  • 忽略查询字符串。 此选项是默认模式。 CDN POP 简单地将请求和所有查询字符串直接传递到第一个请求上的源服务器并缓存该资产。 对该资产的新请求将忽略所有查询字符串,直到 TTL 结束。
  • 绕过查询字符串的缓存。 来自客户端的每个查询请求都将直接传递到源服务器,不进行缓存。
  • 缓存每个唯一的 URL。 发出请求的客户端每次生成唯一的 URL 时,该 URL 都将传递回源服务器,以及通过其自身 TTL 缓存的响应中。 在每个请求都是唯一 URL 的情况下,最后这种方法效率很低,因为缓存命中率很低。

若要更改这些设置,请在“终结点”窗格中选择“缓存规则”,然后选择想应用于终结点的缓存选项,并选择“保存”。

Screenshot of the cache behavior page from CDN profile.

缓存和生存时间

如果通过 Azure CDN 发布网站,则会缓存该网站上的文件,直到其 TTL 结束。 TTL 持续时间由来自源服务器的 HTTP 响应中包含的 Cache-Control 标头决定。

如果未对文件设置 TTL,Azure CDN 会设置默认值。 但是,如果已在 Azure 中设置高速缓存规则,则该默认值可能会被替代。 默认的 TTL 值如下所示:

  • 通用 Web 传递优化:7 天
  • 大型文件优化:1 天
  • 媒体流式传输优化:1 年

若要了解有关高速缓存的详细信息,请参阅“摘要”单元的“延伸阅读”部分。

内容更新

在常规操作中,Azure CDN 边缘节点将提供资产,直到其 TTL 结束。 当 TTL 结束且客户端对该资产发起请求时,边缘节点会重新连接到源服务器。 该节点将提取该资产的另一个副本,并在此过程中重置 TTL。

为确保让用户始终接收最新版本的资产,请考虑在资产 URL 中包含版本字符串。 此方法可让 CDN 立即检索到新的资产。

或者,可清除边缘节点中已缓存的内容,从而在下一次客户端请求时刷新内容。 发布 Web 应用的新版本或替换任何过期的资产时,可清除已缓存的内容。

可通过多种方式清除内容。

  • 可逐一清除终结点;如果你想要一次性更新 CDN 上的所有内容,也可同时清除所有终结点。
  • 可通过包含某文件的路径来指定该文件,或者通过勾选“全部清除”复选框指定所选终结点上的所有资产。
  • 基于通配符 (*) 或使用根 (/)。

Screenshot of the purge cache page from CDN profile.

指定要清除的内容后,选择“清除”按钮。

有关内容过期的详细信息,请参阅“摘要”单元的“延伸阅读”部分。

地区筛选

通过地区筛选,可基于国家/地区代码允许或阻止特定国家/地区中的内容。 在 Microsoft 的 Azure CDN 标准层级中,只能允许或阻止整个站点。 在 Edgio 层级中,还可对目录路径设置限制。 有关详细信息,请参阅“摘要”单元的“延伸阅读”部分。

若要配置地区筛选,请在相应终结点的属性中选择“地区筛选”。 在“地区筛选”窗格中,选择允许或阻止,然后在国家/地区代码列表中,选择想允许或阻止的国家/地区。

Screenshot of the geo filtering page for a CDN profile.

“允许”设置比“阻止”的限制更多。 “允许”仅允许选定国家/地区的访问。 “阻止”的逻辑是允许来自所有国家/地区的访问,被阻止的国家/地区除外。

有关地区筛选的详细信息,请参阅“总结”单元的“延伸阅读”部分。