ASP.NET MVC4捆绑CSS有些在CDN上有些本地服务器吗?

时间:2012-11-09 14:51:57

标签: css asp.net-mvc-4 cdn asp.net-optimization bundling-and-minification

我正在研究 ASP.NET MVC4 System.Web.Optimization捆绑,并想知道如何从提供一些 CSS文件 CDN 其他本地到服务器?

这可能吗?

看起来 bundles.UseCdn = true 处于集合级别,而不是单个捆绑包的设置。

任何指导都将不胜感激。

2 个答案:

答案 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,它将始终在本地提供。