你当前正在访问 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(经典版)停用。
Edgio Azure CDN 将于 2025 年 1 月 15 日停用。 为了避免服务中断,必须在此日期之前将工作负载迁移到 Azure Front Door。 有关详细信息,请参阅 Edgio 的 Azure CDN 停用常见问题解答。
本文将帮助你排查 CDN 文件压缩问题。
如果在本文中有任何需要协助的地方,可以联系 MSDN Azure 和堆栈溢出论坛上的 Azure 专家。 或者,也可以提交 Azure 支持事件。 请转到 Azure 支持站点并选择“获取支持”。
症状
已经为终结点启用了压缩,但返回的文件没有压缩。
提示
要检查返回的文件是否已压缩,需要使用 Fiddler 等工具或浏览器的开发人员工具。 检查使用缓存的内容分发网络内容返回的 HTTP 响应标头。 如果存在名为 Content-Encoding
的标头,且其值为 gzip、bzip2、brotli 或 deflate,则内容已压缩。
原因
有若干个可能的原因,包括:
- 所请求的内容不适合压缩。
- 请求的文件类型未启用压缩。
- HTTP 请求没有包含请求有效压缩类型的标头。
- 源正在发送分块内容。
疑难解答步骤
提示
与部署新的终结点一样,内容分发网络配置更改也需要一些时间才能传播到整个网络。 通常情况下会在 90 分钟内应用更改。 如果这是首次为内容分发网络终结点设置压缩,应考虑等待 1-2 个小时,以确保压缩设置传播到 POP。
验证请求
首先,应该对请求进行一次快速的完整性检查。 可以使用浏览器的开发人员工具来查看正在提出的请求。
- 验证是否将请求发送到终结点 URL,
<endpointname>.azureedge.net
,而不是源。 - 验证该请求包含 Accept-encoding 标头,并且该标头的值包含 gzip、deflate、brotli 或 bzip2。
验证压缩设置(标准 CDN 配置文件)
注意
仅当 CDN 配置文件为来自 Microsoft 的 Azure CDN 标准或来自 Edgio 的 Azure CDN 标准配置文件时,此步骤才适用。
在 Azure 门户中导航到终结点,然后选择“配置”按钮。
- 验证是否已启用压缩。
- 验证待压缩内容的 MIME 类型是否已包括在压缩格式列表中。
验证压缩设置(高级 CDN 配置文件)
注意
仅当 CDN 配置文件为来自 Edgio 的 Azure CDN 高级配置文件时,此步骤才适用。
在 Azure 门户中导航到终结点,然后选择“管理”按钮。 随即会打开补充门户。 将鼠标悬停在“HTTP 大”选项卡上,然后悬停在“缓存设置”浮出控件。 选择“压缩”。
- 验证是否已启用压缩。
- 验证“文件类型”列表包含以逗号分隔(无空格)的 MIME 类型列表。
- 验证待压缩内容的 MIME 类型是否已包括在压缩格式列表中。
验证内容是否已缓存(Edgio CDN 配置文件)
注意
仅当 CDN 配置文件为来自 Edgio 的 Azure CDN 标准或来自 Edgio 的 Azure CDN 高级配置文件时,此步骤才适用。
使用浏览器的开发人员工具,检查响应标头以确保文件已缓存在提出请求的区域中。
- 检查 Server 响应标头。 标头应具有格式平台(POP/服务器 ID),如下例所示。
- 检查 X-Cache 响应标头。 标头应显示 HIT。
验证该文件是否满足大小要求(Edgio CDN 配置文件)
注意
仅当 CDN 配置文件为来自 Edgio 的 Azure CDN 标准或来自 Edgio 的 Azure CDN 高级配置文件时,此步骤才适用。
为了适合进行压缩,文件必须符合以下大小要求:
- 大于 128 字节(内容长度:128)
- 小于 3 MB
在源服务器上检查请求是否包含 Via 标头
Via HTTP 标头指明了由代理服务器正在将请求传递到的 web 服务器。 默认情况下,当请求包含 Via 标头时,Microsoft IIS Web 服务器不会压缩响应。 要覆盖此行为,请执行以下操作: