存储静态文件(图像,css,javascript)的最佳性能 - CDN - BlobStorage或WebRole

时间:2012-03-01 11:49:49

标签: azure cdn azure-storage azure-storage-blobs microsoft-cdn

我有一个关于CDN的基本问题 - BlobStorage和WebRole以及perfrormance。

我有一个非常简单的网站,其中包含静态内容,HTML,Js,图像,CSS和视频(如果用户访问所有网站,我的整个内容最多可以达到3-5MB)。我的网站流量将来自英国98%,我计划每天最多有500.000个独立访问者。

我的问题是关于表现。

你会建议我在我的webrole上启用CDN吗?我会从中受益吗?使用CDN有什么好处,即使我的流量“主要”来自英国?是否在Internet提供商(例如BT)代理上缓存了CDN内容?

您是否建议我在blob存储帐户上托管图片,视频等,并使用来自网络角色的绝对网址引用它?在blob上托管静态文件(可能在存储帐户上启用CDN?)或者只是将静态文件放在Web角色上,性能方面是否存在差异?

我没有在网上找到很多参考文献,但我想网络角色,CDN和存储,使用不同的磁盘/缓存层/网络层,它应该影响性能。

2 个答案:

答案 0 :(得分:10)

在Blob存储(或CDN)中托管静态内容会使Web角色实例(更具体地说是IIS)承受相当大的负担。这将减少CPU和内存使用量,以及Web实例内外的总带宽。还有一个细节:大多数浏览器都配置为(我相信)与给定域的两个并发连接。将静态内容移动到Blob或CDN可以在浏览器中为内容下载提供额外的域和更多并行性。

如果需要,您可以使用CDN,但最好将CDN用于不经常更改的内容(因为您无法强制使内容过期)。所以,如果你有一些不经常改变的CSS,背景图片等,那些都是伟大的CDN候选者。如果它是一个每日更改的首页HTML文件,我会跳过该文件的CDN。

直接打击数据中心的好处:CDN访问不一定是地理上最接近的节点;它基于许多因素。也就是说,EMEA区域中有一些CDN节点(参见完整列表here)。您可以随时添加CDN,但即使没有CDN,转移到blob存储也会对您的应用程序性能产生积极影响。

编辑:在Blob中存储静态内容与在部署中捆绑还有一个优势:您可以非常轻松地更新单个文件,而无需重建/重新部署整个部署包。

答案 1 :(得分:1)

我唯一能想到的是使用CDN角色,你可能在图像上有更好的标题(Cache-Control,Expires),这样浏览器和代理可以长时间缓存这些图像,而如果你从您的主站点提供这些图像,您负责控制这些资源上的标题。

从其他域提供图像也会有所帮助,因为对CDN上托管的资源的所有请求(不同的域名,不使用第3级域)将不包含主站点所需的cookie和身份验证标头。