asp.net MVC中的多个CDN包

时间:2014-10-24 04:52:46

标签: asp.net-mvc angularjs bundle

我一直在尝试将所有js文件从CDN捆绑到一个捆绑包中,如下所示:

bundles.UseCdn = true;
string cdnHost = "https://ajax.googleapis.com/";
bundles.Add(new ScriptBundle("~/bundles/angularCDN", cdnHost).Include(
                        "~/ajax/libs/angularjs/1.3.0-beta.17/angular.js",
                        "~/ajax/libs/angularjs/1.3.0-beta.17/angular-cookies.js",
                        "~/ajax/libs/angularjs/1.3.0-beta.17/angular-route.js"));
BundleTable.EnableOptimizations = true;

但我一直得到“angular is undefined”..当我查看源代码时,页面只会加载主CDN网址:<script src="https://ajax.googleapis.com/"></script>

我也尝试设置debug = false。

我做错了什么?

2 个答案:

答案 0 :(得分:5)

cdnHost参数指的是捆绑包存储在内容传送网络中时的备用URL。 cdn boundle应该作为一个文件加载,并且应该包含在cdn上上传的所有文件的组合内容(在你的情况下只是https://ajax.googleapis.com/):

bundles.Add(new ScriptBundle("~/bundles/angularCDN", cdnHost).Include(
                        "~/ajax/libs/angularjs/1.3.0-beta.17/angular.js",
                        "~/ajax/libs/angularjs/1.3.0-beta.17/angular-cookies.js",
                        "~/ajax/libs/angularjs/1.3.0-beta.17/angular-route.js"));

基本上你有三个选择:

  • 为每个资源定义多个捆绑包“〜/ ajax / libs / angularjs / 1.3.0-beta.17 / angular.js”和托管在cdn上的版本
  • 不要使用cdnHost参数
  • 手动组合所有文件并在自定义cdn上传,然后将此cdn用作cdnHost

答案 1 :(得分:1)

您可以使用jsdelivr(请参阅https://github.com/jsdelivr/jsdelivr)。

例如,如果要捆绑AngularJS 1.2.19,可以使用以下命令:

 var angularBundleCdnPath = "//cdn.jsdelivr.net/g/angularjs@1.2.19(angular.min.js+angular-route.min.js+angular-animate.min.js+angular-cookies.min.js)";

 bundles.Add(new ScriptBundle("~/bundles/angular",
                    angularBundleCdnPath).Include(
                    "~/Scripts/angular.js",
                    "~/Scripts/angular-animate.js",
                    "~/Scripts/angular-route.js",
                    "~/Scripts/angular-cookies.js"));