公告 :本博客为微软云计算中文博客 的镜像博客。 部分文章因为博客兼容性问题 ,会影响阅读体验 。如遇此情况,请访问 原博客 。
昨天我告诉正坐在我边上的一个同事,怎样在Windows Azure上发布的网站上对静态内容启用CDN。方法如下:
1.将静态内容(如图片,CSS文件等)移到博客中存储。
2.在他的存储账户中启用CDN。
3.把这些静态文件的URL改为CDN URL。
我想这是使用CDN的最普通的步骤了。但是今天早上我在Windows Azure 博客上发现新版本Windows Azure SDK 1.4 和新版本Windows Azure Developer Portal 已经被发布了。此CDN的发行版本的一个新特性是:我们不仅可以为存储账户启用CDN,也可以为托管服务启用CDN。这个新特性给我的启示是上面的步骤将变得简单了许多
启用托管服务CDN
我们只需要登录 Windows Azure Developer Portal 就可以启用托管服务CDN了。在“Hosted Services, Storage Accounts & CDN” 项下面我们可以发现左边的一个叫CDN的新菜单,在这里我们可以管理存储账户和托管服务CDN。我们可以看到托管服务和存储账户都被列在订阅中。
启用托管服务CDN是很简单的,只需在顶端选择一个托管服务,然后点击 New Endpoint 按钮即可。
在这个对话框里,我们可以选择我们希望启用CDN的订阅,存储账户或是托管服务。例如上图中,如果我选择了托管服务,“Source URL for the CDN endpoint”就会自动显示。这意味着Windows Azure 平台将使“/cdn”文件夹下所有内容启用CDN。但是此时我们不能改动它的值。
下面紧挨着URL的3个复选框是:
1.启用CDN:启用或不启用CDN。
2.HTTPS:如果我们需要使用HTTPS连接,选中它。
3.查询字符串:如果我们缓存托管服务内容或使用查询字符串来指定被恢复的内容,选中它。
只需点击 “Create”按钮就可以让Windows Azure 为我们创建托管服务CDN。系统会提醒你CDN在60分钟内可用。我觉得大约15分钟CDN可以使用,我们也可以在网页中找到CDN URL。
在托管服务CDN中添加内容
我们使用MVC2网站框架在Visual Studio上创建一个Windows Azure 项目。当我们创建CDN时,系统提醒CDN端点的源URL将放在”/cdn"文件夹下。所以我们在网站上用Visual Studio创建一个命名为"/cdn"的文件夹来存放静态文件。然后如果我们使用CDN端点,所有的文件将被CDN缓存。
托管服务CDN在查询字符串特性被启用时可以缓存一些"动态的"内容。我们在它上创建了一个叫做CdnController 的控制器和GetNumber action 。这个控制器的URL路径为 /Cdn/GetNumber ,这个路径也可以使用CDN因为URL说明了它存放在"/cdn"文件夹下。 在GetNumber action 里我们只需要把一个被参数指定的数值放到视图模型中,然后URL就会形如 /Cdn/GetNumber?number=2.
1: using System;
<!--CRLF-->
2: using System.Collections.Generic;
<!--CRLF-->
3: using System.Linq;
<!--CRLF-->
4: using System.Web;
<!--CRLF-->
5: using System.Web.Mvc;
<!--CRLF-->
6:
<!--CRLF-->
7: namespace MvcWebRole1.Controllers
<!--CRLF-->
8: {
<!--CRLF-->
9: public class CdnController : Controller
<!--CRLF-->
10: {
<!--CRLF-->
11: //
<!--CRLF-->
12: // GET: /Cdn/
<!--CRLF-->
13:
<!--CRLF-->
14: public ActionResult GetNumber(int number)
<!--CRLF-->
15: {
<!--CRLF-->
16: return View(number);
<!--CRLF-->
17: }
<!--CRLF-->
18:
<!--CRLF-->
19: }
<!--CRLF-->
20: }
<!--CRLF-->
我们添加视图来显示数值,非常简单,方法如下:
1: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<int>" %>
<!--CRLF-->
2:
<!--CRLF-->
3: <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<!--CRLF-->
4: GetNumber
<!--CRLF-->
5: </asp:Content>
<!--CRLF-->
6:
<!--CRLF-->
7: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<!--CRLF-->
8:
<!--CRLF-->
9: <h2>The number is: <%
1: : Model.ToString()
<!--CRLF-->
%></h2> <!--CRLF-->
10:
<!--CRLF-->
11: </asp:Content>
<!--CRLF-->
因为这个action是在CdnController 下,所以URL也会在"/cdn"文件夹下,这意味着它可以使用CDN。因为我们选中了 “Query String” ,动态页面内容根据它的query string来进行缓存,所以如果我们使用了CDN URL ,http://az25311.vo.msecnd.net/GetNumber?number=2, CDN将会首先检查是否有内容使用“GetNumber?number=2”进行缓存。如果有,CDN会直接返回内容,否则,它会连接托管服务,http://aurora-sys.cloudapp.net/Cdn/GetNumber?number=2, 然后返回结果给浏览器并且在CDN中缓存。
But to be notice that the query string are treated as string when used by the key of CDN element. This means the URLs below would be cached in 2 elements in CDN:
但是需要注意的是当查询字符串被CDN元素键使用时应作为字符串看待。这意味着下面的URL将在CDN的两个元素里缓存:
在Azure上发布项目以后,我们在网站上使用CDN。我们创建的CDN端点是az25311.vo.msecnd.net 所以在“/cdn”文件夹下可以被请求到。让我们在 sample.htm页面和 c_great_wall.jpg静态文件中试一下。
我们在CDN端点上使用查询字符串也可以请求到动态页面GetNumber
因为来自CDN的内容不需要MVC服务器的处理,所以如果我们刷新这个页面它就会迅速显示出来。
我们这个页面风格丢失了,这是因为CSS文件不包含在“/cdn”文件夹里所以页面不能在CDN URL 中检索到CSS。
总结
在这个帖子中,我介绍了Windows Azure SDK 1.4 发行版本和新Developer Portal 中的 Windows Azure CDN 新特性。使用托管服务CDN,我们可以只在“/cdn”文件夹中存放静态资源,所以CDN可以自动缓存他们,不需要让它们在blob中存储。使用查询字符串特性也可以支持动态内容缓存。所有我们可以使用 UserController 和 CDN可以缓存网页的一部分内容。例如:我们可以在母板面中的用户控件上缓存日志,使得日志可以更迅速的显示出来。
发行版本的其他新特性请点击这里。更多的Windows Azure CDN详细信息请点击这里。
希望以上对你有所帮助,
Shaun
本文翻译自:http://geekswithblogs.net/shaunxu/archive/2011/03/10/cdn-on-hosted-service-in-windows-azure.aspx
分享到:
相关推荐
在windowsazure中托管和使用wcf.
Windows Azure
Queue存储服务与应用程序问通信、云上的关系数据库:SQL Azure、云上的访问控制技术:AppFabric Access Control、云服务的集散中心:AppFabric Service Bus、Windows Azure与其他平台的互操作性、云计算与Windows ...
第3 章到第7 章,通过完整的示例项目系统地介绍windows azure(计算服务、存储服务和部署调试)、sql azure 和windows azure appfabric。最后一章介绍了windows azure平台的高级应用,包括更加深入的功能点、如何在...
Windows Azure 概述
Windows Azure服务总线
70-583 PRO: Windows Azure 题库
循序渐进地介绍了如何构建和管理云端的可扩展应用,一次一个知识点,同时辅之以适当的练习,可帮助读者轻松掌握基本的编程技能,掌握windows azure云计算平台的核心服务和特性,是一本理想的入门教程。 《Windows ...
Build, deploy and manage cloud solutions using combination of Windows Azure Pack, System Center and Hyper-V Impress your peers at work by learning to build applications that can leverage the cloud to ...
简要描述Windows Azure最新的功能、特色和主要的服务
第3章到第7章,通过完整的示例项目系统地介绍Windows Azure(计算服务、存储服务和部署调试)、SQL Azure 和Windows Azure AppFabric。最后一章介绍了Windows Azure平台的高级应用,包括更加深入的功能点、如何在项目...
Windows Azure入门教学系列
Azure能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储、计算和网络基础设施服务,紧密结合起来。这样,开发者就可以在“云端”和“客户端”同时部署应用,使得企业与用户都能共享资源...
介绍Windows Azure上多种存储服务: -结构化的SQL数据库和SQL报表 -半结构化的Table,消息型存储Queue -二进制的Blob,虚拟机磁盘,CDN -大数据引擎HDinsights(Hadoop) -分布式缓存Caching
Windows Azure使用入门 第五课:用户认证上下打通.pdf
Windows Azure使用入门 第二课:建立自己的网站.pdf
Cloud Computing with the Windows Azure Platform Azure电子书 第一本详细介绍Azure的书籍.共363页 文字版,可打印
Windows Azure用户注册流程 非常详细
windows azure
Windows Azure云平台概述.pdf