2017-07-28 38 views
-1

我正在尝试利用Azure CDN尽快加载我的包。使用CDN在单个包中添加多个脚本/样式

我想在每个包和网络选项卡中添加多个不同的文件我可以看到它只加载'cdnAddress'而不是其中的独特文件,因此每个包只会加载包含在'cdnAddress'。

bundles.Add(new StyleBundle("~/Resources/CSS/Plugins/Effects", cdnAddress).Include("~/Content/Styles/Animate/animate.min.css").Include("~/Content/Styles/Hover/hover-min.css")); 

上面的例子表明,我试图把两种不同的CSS文件放到同捆所以我只能就同时使用捆绑页1个请求。但是CDN路径只能提交一次。

我想将'cdnAddress'设置为我的CDN的根网址,这可能吗?如果不是,我怎样才能实现我的目标,而不是两个不同的捆绑。

由于我有很多捆绑包,我正在寻找一个易于维护的解决方案,我可以告诉它我的CDN在哪里,并让它找出文件的CDN路径,因为它们是我网站的镜像。由于我在使用CMS,所以也可能不配置CDN,因此CDN路径将为空。

enter image description here

回答

1

我想成立 'cdnAddress' 是我的CDN的根URL,这可能吗?如果不是,我怎样才能实现我的目标,而不是两个不同的捆绑。

AFAIK,你不能在一个包中提供多个CDN路径。而ScriptBundle.Include可能包含多个本地虚拟路径。

你可以按照下面的方法来达到你的目的:

  • 定义每个CDN路径的束;

  • 您可以手动合并所有相关文件,并将它们上传到您的cdn路径,并使用此cdn路径和多个本地虚拟路径。

样品:

bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
      "~/Scripts/bootstrap.js", 
      "~/Scripts/respond.js")); 
//TO 

bundles.UseCdn = true; 
bundles.Add(new ScriptBundle("~/bundles/bootstrap", "http://yourCdnSite/Scripts/bootstrap.js").Include(
      "~/Scripts/bootstrap.js")); 

bundles.Add(new ScriptBundle("~/bundles/bootstrap", "http://yourCdnSite/Scripts/respond.js").Include(
      "~/Scripts/respond.js")); 
BundleTable.EnableOptimizations = true; 

//OR 

bundles.UseCdn = true; 
bundles.Add(new ScriptBundle("~/bundles/bootstrap", "http://yourCdnSite/Scripts/<the-combination-of-bootstrap.js-and-respond.js>.js").Include(
      "~/Scripts/bootstrap.js", 
      "~/Scripts/respond.js")); 
BundleTable.EnableOptimizations = true; 
相关问题