早些時候ASP.NET團隊推出了一個新的微軟Ajax CDN(Content Delivery Network,內容分發網絡)服務,該服務提供了對AJAX庫(包括JQuery和ASP.NET AJAX)的緩存支持。該服務是免費的,不需要任何註冊,可用於商業性或非商業性用途。
CDN都提供了什麼(What does a CDN provide)?
內容分發網絡(CDNs)是由戰略性地置放於世界各地關鍵Internet網絡節點的“邊緣緩存(edge cache)”服務器組成的。這些“邊緣緩存(edge cache)”服務器可用於緩存和分發各種類型的內容,包括圖片、視頻、CSS和JavaScript文件。
使用CDN可以顯著提高一個完整的終端用戶性能,因爲它允許瀏覽器更快地獲取和下載內容。例如,對一個圖片請求,瀏覽器不再需要跨越Internet到你的web服務器下載,一個CDN可以從鄰近的“邊緣緩存(edge cache)”服務器直接提供服務滿足該請求,而該邊緣緩存服務器可能與你的客戶只有一個網絡單跳(single network hop)之遠(使之返回非常之快,也使得你的網頁轉載更快)。
Microsoft AJAX CDN 提供了什麼(What does the Microsoft AJAX CDN)?
微軟AJAX CDN極大地方便了將JQuery和ASP.NET AJAX腳本庫加到你的網站上,而且自動地由微軟在世界各地的成千個地理定位(geo-located)的邊緣緩存服務器來提供這些腳本。
例如,如果你想使用微軟AJAX CDN的JQuery,你只要在網頁中加一個用了下面URL的標準腳本標識:
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script>
在瀏覽器請求該腳本文件時,他會自動地由最靠近終端用戶的CDN的“邊緣緩存(edge cache)”服務器提供。這意味着:
- 請求處理比之訪問你的web服務器要快很多(使得終端用戶的網頁裝載快很)
- 你不必支付該文件的貸寬花費,因爲該文件來自微軟支付貸寬的服務器(省了你的)
- 腳本可以勤公司能夠的跨站緩存,這意味着,如果用戶剛訪問了一個請求過該文件的網站,name該文件就不再需要下載了(應爲該文件已經存在於瀏覽器的緩存中)
你可以在www.asp.net/ajax/cdn這裏得到我們已經載入我們的CDN緩存的JavaScript庫(以及相關的URLs)的完整列表。
在發佈新的ASP.NET AJAX版本時,微軟會更新CDN中的庫,會繼續更新它以包括隨ASP.NET和Visual Studio發佈的所有JavaScript文件(包括。JQuery,JQuery驗證插件,以及將來發布的另外的庫等)。
CDN服務是免費的,可爲社區中任何人所用,可用於商業性和非商業性用途,且不用註冊即可使用。
在ASP.NET 4.0 ScriptManager中使用微軟AJAX CDN(Using the Microsoft AJAX CDN with the ASP.NET 4.0 ScriptManager)
除了允許你直接只<script>元素來引用腳本文件外,ASP.NET 4.0還通過<asp:scriptmanager />服務器控件簡化了在ASP.NET Web Form應用中CDN的使用。
ASP.NET 4.0 <scp:ScriptManager>控件含有一個名爲“EnableCdn”的新屬性,在你給這個屬性設爲true後,你的應用將自動使用微軟CDN請求JavaScript文件:
<asp:ScriptManager ID="ScriptManager1" EnableCdn="true" runat="server" />
在你通過ScriptManager啓用CDN後,你的應用中所有的JavaScript文件將通過System.Web.dll或System.Web.Extensions.dll程序集從CDN獲取。這包括ASP.NET AJAX中的JavaScript文件,以及內置的Web Form JavaScript文件(例如,用於客戶端驗證的WebUIValidation.js文件,和爲像TreeView,Menu等控件所用的JavaScript文件)。
這提供了一個很好的終端用戶性能改進,同時意味着訪問你的ASP.NET網站的用戶不再需要重新下載這些文件,假如他們曾經訪問過另外一個使用了CDN的ASP.NET網站的話。
使用CDN中的ASP.NET AJAX第五個預覽版(Using ASP.NET AJAX Preview 5 from the CDN)
除了推出AJAX CDN站點外,ASP.NET 開發團隊還發布了ASP.NET AJAX第五個預覽版。你可以在CodePlex上下載ASP.NET AJAX第五個預覽版(帶有例程代碼)。
現在,通過添加下列指向CDN的腳本,你就可以使用ASP.NET AJAX庫:
<script src="http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjax.js" type="text/javascript"></script> <script src="http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjaxTemplates.js" type="text/javascript"></script>
這些腳本標識引用了2009年9月發佈的ASP.NET AJAX庫的beta版本(URL的 /0909/ 部分代表ASP.NET AJAX版本發佈的年和月)。
在添加引用ASP.NET AJAX庫的腳本標識之後,你可以開始在你的網頁上使用該庫。例如,下面的代碼將代表一組相關的客戶端DataView控件樹依附於網頁主體的一個DIV元素。
<script type="text/javascript"> function pageLoad(){ var pictures=[ {url:'Photos/Elephant.jpg',description:'Elephant'}, {url:'Photos/Lion.jpg',description:'Lion'}, {url:'Photos/Zebra.jpg',description:'Zebra'}, ]; $create( Sys.UI.DataView, {data:pictures} null, null, $get('photos') ); } </script> 該DIV元素,其id爲"photos",包含了一個格式化相片數組中每個相片的模板,相片元素是這麼聲明的:
<div id="photos" class="sys-template"> <div class="photo"> <img sys:src="{{url}}" /> <br />{{description}} </div> </div>
在顯示(render)DataView時,photos DIV元素的內容會爲相片數組中的每一個相片像是(render)一次,其結果是顯示了下列相片:
因爲ASP.NET AJAX是純JavaScript庫,上面的代碼在ASP.NET Web Forms,ASP.NET MVC,HTML,甚至經典的ASP網頁中都能完全工作,該代碼在所有現代瀏覽器中也都工作。
你可以在CodePlex上的項目主頁http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32770上下載例程代碼來了解ASP.NET AJAX第五個預覽版的細節。
下面是幾個深入探討ASP.NET AJAX第五個預覽版中特性的博客帖子:
- Microsoft Ajax 4 Preview 5: The DataView Control -- Dave Reed 解釋瞭如何利用第五個預覽版中新加的動態模板和佔位控件(placeholder)特性。
- ASP.NET Ajax Preview 5 and UpdatePanel – Jim Wang 解釋瞭如何在現有的,使用了標準的ASP.NET UpdatePanel控件的網站中使用第五個預覽版。
- Building a class browser with Microsoft Ajax 4.0 Preview 5 – Bertrand Le Roy建造了一個非常酷的Ajax類庫瀏覽器應用,該應用利用了第五個預覽版中的若干個新特性,包括遞歸模板(recursive template)。
- How the DataContext can change your data and your life (well, sort of, but not really) – Jonathan Carter有一個精彩貼子系列,深入探討Ajax DataView 和 DataContext。
結束語
微軟Ajax CDN使得你能夠顯著地提高使用了ASP.NET AJAX或jQuery的ASP.NET Web Forms和 ASP.NET MVC 應用的性能。該服務是免費的,不需任何註冊,可以用於商業性和非商業性用途。
ASP.NET 4.0將特別方便ASP.NET Web Forms開發人員來利用該CDN。通過設置ScriptManager控件的一個屬性,你將能夠把對內置ASP.NET JavaScript文件的所有請求轉向到CDN來獲取,從而提高你的Web Forms應用的性能。
參考文檔
ScottGu's Blog:https://weblogs.asp.net/scottgu/announcing-the-microsoft-ajax-cdn
https://msdn.microsoft.com/zh-cn/library/ee517318.aspx