托管的Web角色

是否有人使用其托管的Web角色成功配置了Azure CDN以进行HTTP压缩? 我们在Azure边缘服务器上压缩HTTP内容时遇到问题。 CDN只缓存未压缩版本的内容。

如果我们使用非Azure方法访问资源链接(webresource.axd),则会按预期方式通过gzip(使用xxxx.cloudapp.net/cdn/webresource.axd)进行压缩。 但是,只要我们将资源链接指向Azure CDN(xxxx.vo.msecnd.net),即使浏览器告诉Azure CDN它接受gzip,内容也会被解压缩。

我向Azure论坛发布了同样的问题,但尚未有人回复。

在解决问题时,看起来Azure CDN正在删除Accept-Encoding HTTP标头。 只是好奇,如果其他人有这个相同的问题。

Azure CDN最佳实践指出...

Windows Azure CDN如何与压缩内容一起使用?

Windows Azure CDN不会修改(或添加)到对象的压缩。 Windows Azure CDN遵循基于“Accept-Encoding”头的原始数据压缩。 从1.4开始,Azure存储不支持压缩。 如果您使用托管服务对象传递,则可以将IIS配置为返回压缩对象。

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


通过反复试验发现,Azure CDN存在一个限制,即它不会通过Accept-Encoding HTTP头,除非它找到包含可压缩文件名类型(.js,.cs)的QueryString参数,或者您正在请求文件通过它的原名(jquery.js,site.css等)。

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

我们使用自定义的AXD资源处理程序,所以这对我们来说很容易实现。 我们对组合的缩小资源应用&group=core.js&group=core.css ,并按预期工作。 很不幸,这在目前的Azure CDN文档中并不存在。

简而言之,我们必须从这里转换我们的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)。


CDN从原点获取压缩,而Windows Azure存储不直接支持压缩,所以如果从Azure存储源获得CDN内容,则不会进行压缩。 因此,如果您的内容托管在Windows Azure存储中,您将无法获得压缩的内容。 要拥有压缩的内容,您需要托管托管服务的内容,例如网站角色作为来源。 由于这种类型的来源将基于IIS,因此是使用压缩的受支持方式。

Windows Azure CDN通过HTTP1.0支持压缩内容,并且大部分时间我遇到的问题与具有HTTP 1.0 vs HTTP 1.1问题有关。 因此,当您通过HTTP 1.0(使用wget命令)直接从Web角色请求CDN对象时,如果所有信息都正确,则应该获得压缩内容。 如果你得到非压缩内容,那么你知道问题在哪里。 请确定您已配置您的应用程序和IIS本身以将压缩内容传送到HTTP 1.0客户端以及HTTP 1.1客户端。

我已经写了一篇详细的博客文章,以通过Web角色正确添加使用Azure CDN的HTTP压缩:

http://blogs.msdn.com/b/avkashchauhan/archive/2012/03/05/enableing-gzip-compression-with-windows-azure-cdn-through-web-role.aspx


这些关于添加.css / .js扩展的答案似乎不适用于最近(2014年第1季度)更新的Azure CDN服务后端。

我今天运行了一个新的Cloud Service Web Role项目和一个新的CDN实例进行了隔离测试。

我将一个/cdn/style-1.css文件放在我的web角色(单个实例)中,并通过CDN访问它。 它没有被压缩。 直接访问WAS压缩。

我为提供gzip内容的Web角色修复了确保IIS配置选项noCompressionForProxies为“false”(默认为true)。

这使得Azure CDN将我发送给gzip'd的内容。

附加css / js扩展没有区别。

请注意,测试此更改时,这是主机配置更改,因此您必须通过IIS管理器(而不是iisreset)重新启动IIS以使其生效。 最后,要测试更改,请确保创建一个新文件(例如,style-2.css)并通过CDN请求它,以便再次从源服务器获取它。

链接地址: http://www.djcxy.com/p/62713.html

上一篇: Hosted Web Role

下一篇: Windows Azure CDN using https