ASP.NETでのCDN利用とフォールバック対応

ASP.NET
By: Julien Potron

ASP.NETでCDN(Content Delivery Network)を利用する方法です。

 

 Global.asaxを編集する

Global.asaxファイルにリソース定義(ScriptResourceDefinition)を生成してScriptManagerコントロールに追加するメソッドを作成し、Application_Startメソッドで実行するようにします。
これでアプリケーションの初期化時にリソース定義が追加されるようになります。

void Application_Start(object sender, EventArgs e)
{
    // jQuery
    AddJQueryDefinition();
    // jQuery UI
    AddJQueryUiDefinition();
}

/// <summary>
/// jQueryのリソース定義を追加
/// </summary>
private static void AddJQueryDefinition()
{
    string version = "1.11.1";
    ScriptResourceDefinition def = new ScriptResourceDefinition();
    def.Path = "~/Scripts/jquery/jquery-" + version + ".min.js";
    def.DebugPath = "~/Scripts/jquery/jquery-" + version + ".js";
    def.CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + version + ".min.js";
    def.CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + version + ".js";
    def.CdnSupportsSecureConnection = true;
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", null, def);
}

/// <summary>
/// jQuery UIのリソース定義を追加
/// </summary>
private static void AddJQueryUiDefinition()
{
    string version = "1.10.4";
    ScriptResourceDefinition def = new ScriptResourceDefinition();
    def.Path = "~/Scripts/jquery.ui/" + version + "/jquery.ui.min.js";
    def.DebugPath = "~/Scripts/jquery.ui/" + version + "/jquery.ui.js";
    def.CdnPath = "http://ajax.aspnetcdn.com/ajax/jquery.ui/" + version + "/jquery-ui.js";
    def.CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jquery.ui/" + version + "/jquery-ui.min.js";
    def.CdnSupportsSecureConnection = true;
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery.ui", null, def);
}

 

ScriptManagerを編集

マスターページ(Site.Master)などにあるScriptManagerコントロールにScriptReferenceタグを追加して、AddDefinition時の第一引数で指定した「jquery」や「jquery.ui」を指定すると、該当するリソース定義に設定したスクリプトが取得されるようになります。

<asp:ScriptManager runat="server" EnableCdn="true">
    <Scripts>
        <asp:ScriptReference Name="jquery"/>
        <asp:ScriptReference Name="jquery.ui"/>
    </Scripts>
</asp:ScriptManager>

 

取得されるスクリプトは、ScriptManagerのEnableCdnをtrueにするとCdnPathやCdnDebugPathを優先して利用し、CDNが利用できないときはフォールバックしてPathやDebugPathを利用してくれます。

Path リリースモードで実行したときに使用されるパス
DebugPath デバッグモードで実行したときに使用されるパス
CdnPath リリースモードで実行し、CDNを利用するときに使用されるパス
CdnDebugPath デバッグモードで実行し、CDNを利用するときに使用されるパス

 

CDNは Microsoft Ajax Content Delivery Network を利用しました。

 

コメント

タイトルとURLをコピーしました