簡體   English   中英

ASP.NET MVC多個虛擬路徑捆綁帶CDN

[英]ASP.NET MVC multiple virtualpath Bundle with CDN

我試圖在ASP.NET MVC 4中添加一些支持CDN的捆綁包。目的是在同一數據中心托管的許多其他站點在本地共享內容

第一次嘗試是:

            bundles.Add(new ScriptBundle("~/bundles/jquery", "http://mysite/Content/js/").Include(
                                                              "http://mycdnsite/Content/js/jquery.unobtrusive-ajax.min.js",
                                                              "http://mycdnsite/Content/js/jquery-migrate-1.2.1.js",
                                                              "http://mycdnsite/Content/js/jquery-{version}.js"));

不幸的是,這是不可能的,因為virtualPath必須是相對的(只允許應用程序相對URL(〜/ url))

然后我試過這個:

        bundles.Add(new ScriptBundle("~/bundles/jquery", "http://mycdnsite/Content/js/").Include(
                                                              "~/jquery.unobtrusive-ajax.min.js",
                                                              "~/jquery-migrate-1.2.1.js",
                                                              "~/jquery-{version}.js"));

但它沒有奏效,即使啟用CDN:

BundleTable.EnableOptimizations = true;
bundles.UseCdn = true;

是否可以使用CDN創建多個內容包?

AFAIK您不能在一個捆綁包中提供多個CDN主機。 ScriptBundle允許您為捆綁包指定備用URL,捆綁包可以包含多個本地文件。 你的語法是正確的。

bundles.UseCdn = true;
bundles.Add(new ScriptBundle("~/bundles/jquery",
   @"//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js"
   ).Include(
    "~/Scripts/jquery-{version}.js"));

有幾種方法可以解決這個問題。

  1. 每個CDN托管腳本都有一個捆綁包。
  2. 手動創建一個文件包並將它們上傳到您自己的CDN並引用它。
public static void RegisterBundles(BundleCollection bundles)
{
    bundles.UseCdn = true;   // enable CDN     
    // How to add link to jQuery on the CDN ?
    var jqueryCdnPath = "http://mycdnsite/Content/js/jquery.unobtrusive-ajax.min.js";

    bundles.Add(new ScriptBundle("~/bundles/jquery", jqueryCdnPath)
           .Include("~/Scripts/jquery-{version}.js"));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM