11

我正在研究ASP.NET MVC4 System.Web.Optimization 捆绑包,想知道您将如何从CDN和服务器本地提供一些CSS 文件

那可能吗?

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

任何指导将不胜感激。

4

2 回答 2

19

ASP.NET 站点有一些关于此的信息:

以下代码将本地 jQuery 包替换为 CDN 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 请求失败。布局文件末尾的以下标记片段显示了在 CDN 失败时添加到请求 jQuery 的脚本。

就个人而言,我发现自己不会从 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")
于 2012-11-09T14:57:29.467 回答
9

正确,目前唯一的 CDN 支持是在每个捆绑包级别上,您不能拥有包含来自 CDN 和一些本地资产的捆绑包。基本上它是或者:你可以让包使用 CDN 并回退到本地服务器的包,或者整个包必须在 CDN 上。

更新:但澄清一下,您可以在 CDN 上拥有一些捆绑包,在本地拥有一些捆绑包。这由捆绑实例上的 CdnPath 控制。基本上,如果单个捆绑包上没有设置 CdnPath,它将始终在本地提供。

于 2012-12-10T18:49:41.847 回答