我正在研究ASP.NET MVC4。客户端需要从捆绑的其他域(如CDN)加载所有javascripts和css。我使用过System.Web.Optimization。
下面是代码。
var bundle = new ScriptBundle("~/bundles/scripts/");
bundle.Orderer = new AsIsBundleOrderer();
bundle.EnableFileExtensionReplacements = false;
bundle.CdnPath = "http://js.cusomdomainname.com";
bundle.Include("~/Scripts/jquery-1.7.1.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.validate.unobtrusive.min.js");
BundleTable.Bundles.UseCdn = true;
BundleTable.EnableOptimizations = true;
BundleTable.Bundles.Add(bundle);
BundleTable.Bundles.IgnoreList.Clear();
在视图
上@Scripts.Render("~/bundles/scripts/")
但它不是从另一个域渲染。
可能是什么问题?
答案 0 :(得分:5)
此示例显示了如何在“发布”中从CDN加载资源'模式和本地来自' debug'模式。
var jqueryCdnPath = "//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js";
var jqueryBundle = new ScriptBundle("~/bundles/jqueryCdn", jqueryCdnPath)
.Include("~/Scripts/jquery-{version}.js");
BundleTable.Bundles.Add(jqueryBundle);
CdnPath
指的是您想要从CDN获取的资源,Include
告诉您在本地查找的位置。您可以从Web.config更改请求的那个。将<compilation debug="true"/>
设置为使用本地文件,将<compilation debug="false"/>
设置为使用CDN。
有关详细信息,请参阅此Bundling and Minification文章。
答案 1 :(得分:1)
我不关心cdnPath stuff在捆绑中的工作方式,因为你只能为整个bundle指定一个文件路径。如果您想设置一个简单的origin-pull CDN,则可以更轻松地执行以下操作:
@Scripts.RenderFormat(
"<script src='http://js.cusomdomainname.com{0}'></script>",
"~/bundles/scripts/")
如果您拥有包含大量不同文件的包,无论是否启用了优化,都可以使用。
这也解决了here
描述的查询参数的问题