`
isiqi
  • 浏览: 16490088 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Windows Azure 上的托管服务CDN

阅读更多

公告 :本博客为微软云计算中文博客 的镜像博客。 部分文章因为博客兼容性问题会影响阅读体验如遇此情况,请访问 原博客

昨天我告诉正坐在我边上的一个同事,怎样在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

分享到:
评论

相关推荐

    Introduction to Windows Azure.pptx

    - **部署流程**:在Windows Azure上部署服务涉及到创建、配置和发布应用的过程。 - **更新机制**:当需要更新已部署的服务时,可以利用Windows Azure提供的工具和服务进行版本控制和更新管理。 #### 八、主机操作...

    Windows Azure使用入门 第四课:开发测试在云中.pdf

    5. **发布网站**:利用 Visual Studio 2013 的发布功能,可以直接将网站部署到 Windows Azure 上。 6. **监控与调试**:发布后,可以通过 Visual Studio 2013 的工具进行远程调试和监控,确保网站正常运行。 #### ...

    Windows Azure Compute(讲稿)

    - **Worker Role Instances** - 运行Windows上的代码,可以用于执行后台任务,如数据处理、视频编码等。 - **VM Role Instances** - 支持用户自定义的Windows Server 2008 R2镜像,适用于将本地Windows Server应用...

    WindowsAzure平台介绍.pptx

    通过Windows Azure,企业能够快速构建和发布全球覆盖的网站,利用CDN服务提高内容分发速度,同时,通过流量管理器优化全球用户的访问体验。 总的来说,Windows Azure作为一个全面的公有云解决方案,不仅提供了基础...

    Introducing Windows Azure

    - **从本地或托管应用中使用云存储**:即使应用程序部署在本地或第三方数据中心,也可以通过Windows Azure提供的存储服务进行数据备份或异地容灾。 #### 更深入理解Windows Azure - **构建Windows Azure应用程序**...

    Laravel开发-azure-laravel

    描述中提到的“支持存储队列的Laravel Azure包”暗示我们正在处理一个扩展包,这个包可能是为了帮助开发者更好地在Azure上利用存储队列服务。在Laravel中,队列可以用来处理耗时的任务,如发送电子邮件或执行后台...

    lets-encrypt-azure:基于Azure功能的让我们为Azure CDN和应用程序服务加密自动化

    此解决方案还使基于Azure CDN的域能够使用“让我们加密”证书(如果要通过Azure Blob存储托管静态网站的自定义域名,则需要使用Azure CDN)。 如果您想知道如何设置由Blob Storage支持的基于Azure CDN的网站,请。...

    Laravel开发-df-azure .zip

    开发者可以利用Azure来托管Web应用、数据库、存储服务等,并且可以通过Azure DevOps实现持续集成和持续部署(CI/CD)。 **Laravel 应用部署到 Azure** 1. **设置Azure Web App**: 在Azure Portal中创建一个新的Web...

    Azure Cloud Services的部署环境平台相关元模型

    其中具体的服务包括但不限于虚拟机 (Virtual Machines)、云服务 (Cloud Services)、网站托管 (Web Sites)、移动服务 (Mobile Services)、存储服务 (Storage)、SQL 数据库 (SQL Database)、Hadoop 分析服务 ...

    Microsoft+Azure+Administrator+AZ-104笔记(201011).docx

    - 使用Azure存储常规账户V2的$web容器,可以直接托管静态内容,支持自定义域名、CDN和SSL。 9. **快照**: - 快照是Blob或文件的只读副本,用于备份目的。创建后可以读取、复制或删除,但不能修改。 10. **存储...

    Sitecore-Azure-Content:存储库包含有关如何利用Azure服务将Sitecore解决方案自动部署到Microsoft Azure云平台的文章

    - **Azure SQL Database**或**Azure PostgreSQL**:为Sitecore数据库提供云托管服务,确保数据的高可用性和安全性。 - **Azure Blob Storage**:用于存储Sitecore媒体库内容和其他非结构化数据。 - **Azure CDN**...

    azure_monkeyproblems

    5. **Azure Functions和静态网站**:在Azure上,开发者可能使用Azure Functions托管后端逻辑,同时用存储帐户托管静态内容(如HTML、CSS和JavaScript)。配置函数应用和静态网站的访问规则可能会涉及CSS的加载路径...

    jetzt:使用单个命令将无服务器的Next.js应用程序发布到Azure Functions!

    通常,有两种方法可以在Azure Functions上托管Next.js应用程序: 使用一个接受请求并通过Next.js的服务器模式路由请求的函数 将每个页面发布为单独的Azure函数 jetzt使用第二种方法。 每个页面都包装有一个小的,...

    Azure邀请

    标题 "Azure邀请" 暗示我们关注的是与微软Azure云平台相关的技术...综上所述,"Azure邀请"可能是一个关于如何使用Azure平台构建、托管和管理HTML Web应用的教程、项目或讨论,涵盖了从基础服务到高级功能的多个方面。

    azure

    Azure是微软提供的一个全面的云服务平台,它涵盖了计算、存储、数据库、网络、分析、人工智能等众多服务,为企业和开发者提供了构建、部署和管理应用程序的能力。Azure在全球范围内拥有多个数据中心,确保了数据的...

    simple-image-server:基于MongoDB,Azure Blob存储或Google Drive托管自己的图像服务器

    基于MongoDB,Azure Blob存储或Google云端硬盘托管自己的映像服务器 入门 支持平台 AWS S3存储 Google云端硬碟 Azure Blob存储 MongoDB GridFS 支持的格式 图片/ jpeg 图片/ png 图片/ Webp :laptop_computer: ...

    react-azure-static-web-app:该项目是使用带有Azure功能的React应用程序构建的Azure静态Web应用程序服务的示例

    在本项目"react-azure-static-web-app"中,我们看到一个使用React框架开发的静态Web应用程序,该应用被设计为与Azure服务集成,特别是Azure静态Web应用程序服务。这是一个云托管解决方案,可以快速部署和管理静态...

    azure-static-webapp

    标题中的“azure-static-webapp”指的是Azure静态Web应用服务,这是微软Azure云平台提供的一项服务,用于托管静态内容和无服务器的JavaScript后端。这项服务特别适合构建现代Web应用程序,如单页应用(SPA)、静态...

    参考资料-八大服务功能.zip

    3. **数据库服务**:数据库服务通常包括托管的数据库解决方案,例如关系型数据库(如Amazon RDS)、非关系型数据库(如MongoDB Atlas)以及数据仓库(如Amazon Redshift)。这些服务简化了数据库的管理和维护,允许...

    ASP.NET_在线服务

    4. 部署和托管:IIS(Internet Information Services)是常见的ASP.NET应用服务器,但也可以选择Azure App Service等云服务进行托管。 5. 测试和调试:Visual Studio等开发工具提供了强大的测试和调试功能,帮助...

Global site tag (gtag.js) - Google Analytics