我正在研究 ASP.NET MVC4 System.Web.Optimization捆绑,并想知道如何从提供一些 CSS文件 CDN 和其他本地到服务器?
这可能吗?
看起来 bundles.UseCdn = true 处于集合级别,而不是单个捆绑包的设置。
任何指导都将不胜感激。
答案 0 :(得分:19)
关于此问题的ASP.NET site has some information:
以下代码用CDN jQuery替换本地jQuery包 束。
public static void RegisterBundles(BundleCollection bundles)
{
//bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
// "~/Scripts/jquery-{version}.js"));
bundles.UseCdn = true; //enable CDN support
//add link to jquery on the CDN
var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";
bundles.Add(new ScriptBundle("~/bundles/jquery",
jqueryCdnPath).Include(
"~/Scripts/jquery-{version}.js"));
// Code removed for clarity.
}
在上面的代码中,将在CDN中请求jQuery 发布模式和jQuery的调试版本将在本地获取 在调试模式下。使用CDN时,您应该有一个回退机制 如果CDN请求失败。以下标记片段来自 布局文件的结尾显示脚本添加到请求jQuery应该 CDN失败了。
就个人而言,我没有发现自己调试来自jQuery,Knockout或任何其他库的代码。我总是直接在我的布局中引用CDN资源。我需要自己滚动的任何脚本然后使用MVC框架进行捆绑。
我的网站通常看起来像这样:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
@Scripts.Render("~/content/js/siteName")
答案 1 :(得分:9)
正确,现在唯一的CDN支持是在每个捆绑级别上,您不能拥有来自CDN的一些单独资产和当前本地的一些资产。基本上它是或者:你可以让bundle使用cdn with fallback到本地服务器的bundle,或者整个bundle必须在CDN上。
更新:但要澄清一下,您可以在CDN上安装一些捆绑包,在本地捆绑一些捆绑包。这是由bundle实例上的CdnPath控制的。基本上,如果单个包上没有设置CdnPath,它将始终在本地提供。