我正在研究ASP.NET MVC4 System.Web.Optimization 捆绑包,想知道您将如何从CDN和服务器本地提供一些CSS 文件?
那可能吗?
看起来bundles.UseCdn = true处于集合级别,而不是单个捆绑包的设置。
任何指导将不胜感激。
我正在研究ASP.NET MVC4 System.Web.Optimization 捆绑包,想知道您将如何从CDN和服务器本地提供一些CSS 文件?
那可能吗?
看起来bundles.UseCdn = true处于集合级别,而不是单个捆绑包的设置。
任何指导将不胜感激。
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")
正确,目前唯一的 CDN 支持是在每个捆绑包级别上,您不能拥有包含来自 CDN 和一些本地资产的捆绑包。基本上它是或者:你可以让包使用 CDN 并回退到本地服务器的包,或者整个包必须在 CDN 上。
更新:但澄清一下,您可以在 CDN 上拥有一些捆绑包,在本地拥有一些捆绑包。这由捆绑实例上的 CdnPath 控制。基本上,如果单个捆绑包上没有设置 CdnPath,它将始终在本地提供。