我正在使用asp.net捆绑/缩小并将所有内容放在bundle.config中,如下所示:
<styleBundle path="~/css/css">
<include path="~/css/bootstrap.css" />
<include path="~/css/flexslider.css" />
<include path="~/css/font-awesome.css" />
<include path="~/css/Site.css" />
<include path="~/css/orange.css" />
</styleBundle>
但我想使用CDN中的bootstrap.css:
//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css
那么我们怎样才能在bundle.config中执行此操作?
答案 0 :(得分:4)
目前,您无法混合和匹配并从外部源(如cdn)中提取捆绑包中的某些文件。您可以将整个捆绑包上传到CDN并配置帮助程序以在CDN中呈现对捆绑包的引用,但是您不能包含来自外部源的文件,这些文件必须位于您的应用程序可以找到的位置。
您可以通过实现能够在运行时从CDN获取文件的VirtualPathProvider解决此问题,但您必须自己构建它。
答案 1 :(得分:0)
您不能混合使用捆绑包,但可以在boundle配置中包含外部源。
这是一个从here中挑选的例子,如randomidea指出的那样。
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,为此我们将UseCdn设置为true,并在ScriptBundle构造函数中添加url。 include文件将在调试模式下使用。
正如文章所述,我们需要有一个回退机制,以防我们的CDN失败:
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
var e = document.createElement('script');
e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
e.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(e);
}
</script>
希望这有帮助。
答案 2 :(得分:-1)
ASP.NET文档可能能够帮助您 - http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification,有一个名为使用CDN 的部分。