Azure CDN - 启用 HTTP 压缩 - 托管 Web 角色

标签 azure cdn azure-web-roles azure-cdn

有人成功了configured Azure CDN for HTTP compression使用他们的托管网络角色?我们在 Azure 边缘服务器上压缩 HTTP 内容时遇到问题。 CDN 仅缓存内容的未压缩版本。

如果我们从非 Azure 方法点击资源链接 (webresource.axd),它会通过 gzip 进行压缩(使用 xxxx.cloudapp.net/cdn/webresource.axd em>)如预期。但是,一旦我们将资源链接指向 Azure CDN (xxxx.vo.msecnd.net),尽管浏览器告知 Azure CDN 它接受 gzip,内容仍会以未压缩的形式提供。

posted this same issue to Azure Forums ,但目前尚未有人回复。

在排查问题时,Azure CDN 似乎正在删除 Accept-Encoding HTTP header 。只是好奇其他人是否也遇到过同样的问题。

Azure CDN Best Practices states...

How does the Windows Azure CDN work with compressed content?

The Windows Azure CDN will not modify (or add) compression to your objects. The Windows Azure CDN respects whatever compression is provided by the origin based on the "Accept-Encoding" header. As of 1.4, Azure Storage does not support compression. If you are using hosted-service object delivery, you can configure IIS to return compressed objects.

我们看到的是 CDN 不尊重源Accept-Encoding,它被剥夺了。

最佳答案

经过反复试验发现,Azure CDN 有一个当前限制,即它不会传递 Accept-Encoding HTTP header ,除非它找到包含可压缩文件名类型的 QueryString 参数(.js、.cs),或者您正在按其原始名称请求文件(jquery.js、site.css 等)。

这意味着如果您使用 AXD resource handler (WebResource.axd 等),将不会执行 HTTP 压缩。如果附加带有 .cs.js 扩展名的 QueryString 参数,Azure CDN 将仅传递 Accept-Encoding

我们正在使用自定义 AXD 资源处理程序,因此这对我们来说很容易实现。我们刚刚将 &group=core.js&group=core.css 应用到我们组合的缩小资源中,并且压缩按预期进行。不幸的是,当前的Azure CDN documentation中不存在这个。 .

简而言之,我们必须从此转换我们的 URI:

https://xxxx.vo.msecnd.net/resourceManager.axd?token=HL80vX5hf3lIAAA

对此:

https://xxxx.vo.msecnd.net/resourceManager.axd?token=HL80vX5hf3lIAAA&group=core.js

一旦 Azure CDN 在查询字符串中看到 .js,它将返回资源的压缩版本。

希望这对使用通过 Azure CDN 提供的 Web 资源 (AXD) 的其他人有所帮助。

关于Azure CDN - 启用 HTTP 压缩 - 托管 Web 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10420004/

相关文章:

azure - 使用 azure cli 创建后如何检索服务主体密码?

azure - 通过 Azure API 更新 Azure keyvault secret

azure - 运行多容器应用程序时,适用于容器的 Azure Web App 是否支持 ssh 访问?

apache - 正确使用 Header set Connection Keep-Alive (Apache)

javascript - 发现 JavaScript CDN 命中率

azure - 是否可以在同一云服务中的 Web 和辅助角色中拥有 https 端点?

asp.net-mvc - IIS8中最佳的 "Dynamic IP Restriction Settings"是多少

azure - Azure 中的 Multi-Tenancy 数据架构

bash - 如何将数组传递给 az appservice plan update -add 命令/参数?

php - 将 CDN 用于 js 和类似资源与本地相比更好吗?