托管的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