你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

排除 Azure 内容分发网络文件压缩故障

重要

Microsoft Azure CDN Standard(经典版)将于 2027 年 9 月 30 日停用。 为了避免任何服务中断,请务必在 2027 年 9 月 30 日之前将 Microsoft Azure CDN Standard(经典版)配置文件迁移到 Azure Front Door Standard 层或 Premium 层。 有关详细信息,请参阅 Microsoft Azure CDN Standard(经典版)停用

本文将帮助你排查 CDN 文件压缩问题。

如果在本文中有任何需要协助的地方,可以联系 MSDN Azure 和堆栈溢出论坛上的 Azure 专家。 或者,也可以提交 Azure 支持事件。 请转到 Azure 支持站点并选择“获取支持”。

症状

已经为终结点启用了压缩,但返回的文件没有压缩。

提示

要检查返回的文件是否已压缩,需要使用 Fiddler 等工具或浏览器的开发人员工具。 检查使用缓存的内容分发网络内容返回的 HTTP 响应标头。 如果存在名为 Content-Encoding 的标头,且其值为 gzip、bzip2、brotli 或 deflate,则内容已压缩。

Content-Encoding 标头

原因

有若干个可能的原因,包括:

  • 所请求的内容不适合压缩。
  • 请求的文件类型未启用压缩。
  • HTTP 请求没有包含请求有效压缩类型的标头。
  • 源正在发送分块内容。

疑难解答步骤

提示

与部署新的终结点一样,内容分发网络配置更改也需要一些时间才能传播到整个网络。 通常情况下会在 90 分钟内应用更改。 如果这是首次为内容分发网络终结点设置压缩,应考虑等待 1-2 个小时,以确保压缩设置传播到 POP。

验证请求

首先,应该对请求进行一次快速的完整性检查。 可以使用浏览器的开发人员工具来查看正在提出的请求。

  • 验证是否将请求发送到终结点 URL,<endpointname>.azureedge.net,而不是源。
  • 验证该请求包含 Accept-encoding 标头,并且该标头的值包含 gzip、deflate、brotli 或 bzip2。

CDN 请求标头

验证压缩设置(标准 CDN 配置文件)

注意

仅当 CDN 配置文件为来自 Microsoft 的 Azure CDN 标准或来自 Edgio 的 Azure CDN 标准配置文件时,此步骤才适用。

Azure 门户中导航到终结点,然后选择“配置”按钮。

  • 验证是否已启用压缩。
  • 验证待压缩内容的 MIME 类型是否已包括在压缩格式列表中。

CDN 压缩设置

验证压缩设置(高级 CDN 配置文件)

注意

仅当 CDN 配置文件为来自 Edgio 的 Azure CDN 高级配置文件时,此步骤才适用。

Azure 门户中导航到终结点,然后选择“管理”按钮。 随即会打开补充门户。 将鼠标悬停在“HTTP 大”选项卡上,然后悬停在“缓存设置”浮出控件。 选择“压缩”

  • 验证是否已启用压缩。
  • 验证“文件类型”列表包含以逗号分隔(无空格)的 MIME 类型列表。
  • 验证待压缩内容的 MIME 类型是否已包括在压缩格式列表中。

CDN 高级压缩设置

验证内容是否已缓存(Edgio CDN 配置文件)

注意

仅当 CDN 配置文件为来自 Edgio 的 Azure CDN 标准或来自 Edgio 的 Azure CDN 高级配置文件时,此步骤才适用。

使用浏览器的开发人员工具,检查响应标头以确保文件已缓存在提出请求的区域中。

  • 检查 Server 响应标头。 标头应具有格式平台(POP/服务器 ID),如下例所示。
  • 检查 X-Cache 响应标头。 标头应显示 HIT

CDN 响应标头

验证该文件是否满足大小要求(Edgio CDN 配置文件)

注意

仅当 CDN 配置文件为来自 Edgio 的 Azure CDN 标准或来自 Edgio 的 Azure CDN 高级配置文件时,此步骤才适用。

为了适合进行压缩,文件必须符合以下大小要求:

  • 大于 128 字节(内容长度:128)
  • 小于 3 MB

在源服务器上检查请求是否包含 Via 标头

Via HTTP 标头指明了由代理服务器正在将请求传递到的 web 服务器。 默认情况下,当请求包含 Via 标头时,Microsoft IIS Web 服务器不会压缩响应。 要覆盖此行为,请执行以下操作: