4

我正在尝试使用 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"));

不幸的是,这是不可能的,因为 virtualPaths 必须是相对的(只允许应用程序的相对 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 创建多个内容包?

4

2 回答 2

1

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 并引用它。
于 2015-06-26T09:27:08.107 回答
0
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"));
}
于 2015-06-25T22:14:28.797 回答