假设我们的应用程序处于离线状态,即我们无法使用第 3 方 CDN,因此我们正在创建自己的 CDN。
我想将所有供应商脚本托管在一个单独的(父级)Web 应用程序中,然后将它们包含在其他几个 MVC 应用程序的捆绑包中。
e.g.
http://localhost/parentWeb/Scripts/jquery.js
http://localhost/parentWeb/Scripts/jquery-ui.js
http://localhost/parentWeb/Scripts/globalize.js
我想包含在位于以下位置的 ASP.NET MVC 应用程序网站中: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) 该捆绑包仅存在于该 URL 中。如果 CDN 资源不可用,则提供回退方案。否则,您只需将其硬编码到页面即可获得同样的服务,而根本不用担心设置捆绑包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)