假设我们的应用程序处于离线状态,即我们无法使用第三方CDN,因此我们正在创建自己的CDN.
我想在单独的(Parent)Web应用程序中托管所有供应商脚本,然后将它们包含在其他几个MVC应用程序的捆绑包中.
我想在单独的(Parent)Web应用程序中托管所有供应商脚本,然后将它们包含在其他几个MVC应用程序的捆绑包中.
例如
> http://localhost/parentWeb/Scripts/jquery.js
> http://localhost/parentWeb/Scripts/jquery-ui.js
> http://localhost/parentWeb/Scripts/globalize.js
我想包括在ASP.NET MVC App网站,位于:http:// localhost / parentWeb / childWeb
就是这样做:
bundles.UseCdn = true; bundles.Add( new ScriptBundle( "~/bundles/VendorScripts","http://localhost/parentWeb/Scripts/jquery.js","http://localhost/parentWeb/Scripts/jquery-ui.js","http://localhost/parentWeb/Scripts/globalize.js"));
…当然当然不可能.有没有很好的解决方法?
解决方法
您不能捆绑外部资源.如果你想到这一点,那么这是有道理的.这将需要捆绑器实际下载资源并将其保存到文件系统,然后才能使用它,当然如果外部资源无法达到,则会以某种方式异步执行.而且,在每个页面加载时都必须这样做,因为它不能先检索lastmod(因此知道它是否真的需要重新分组).
如果您使用CDN资源,则捆绑程序仅将该URL直接打印到该页面;它没有做任何修改.即使这样,它只允许您创建一个仅一个URL的“捆绑”,因为1)捆绑多个CDN资源是没有意义的,因为这将破坏CDN的目的,2)该捆绑仅存在于此如果CDN资源不可用,则提供后备.否则,您只需将其硬编码到页面,而不用担心设置一个捆绑包,那么您也将被送达.