ser*_*hio 9 .net c# asp.net-mvc jquery asp.net-mvc-4
我阅读了有关捆绑和通知的文章,特别是关于使用CDN的文章,但有些事情我不清楚.
有这样的例子:
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.
}
Run Code Online (Sandbox Code Playgroud)
是否有可能使用{version}CDN引用的格式,如"本地"引用?
在捆绑包中包含已经缩小的脚本版本(如jquery-1.7.1.min.js)有什么意义?如果它不存在怎么办?它不应该搜索.min文件是否存在和/或分别生成它?
using System.Web;
using System.Web.Optimization;
namespace MvcApp
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery", "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js").Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap","https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js").Include("~/Scripts/bootstrap.js"));
bundles.Add(new StyleBundle("~/Content/css", "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css").Include("~/Content/bootstrap.css"));
BundleTable.EnableOptimizations = true;
bundles.UseCdn = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
许多开发人员没有意识到的是ScriptBundle和StyleBundle的类构造函数有一个重载,它需要两个字符串参数,例如,对于ScriptBundle,它将是ScriptBundle(string,string),对于StyleBundle,它将是StyleBundle(字符串,字符串)。第一个参数是虚拟路径,第二个参数是cdnPath。
我们可能会问自己,是否需要两个参数,MVC如何知道要使用哪个参数?好吧,仅当BundleTable.EnableOptimizations属性设置为true时,才使用cdn位置。
将EnableOptimization属性设置为true会告诉MVC使用使用文件的缩小版本而不是常规版本。
当此属性设置为true且存在CDN路径时,MVC将使用CDN路径而不是本地虚拟路径。
您还必须将另一个属性设置为true,即bundles.UseCdn。
这告诉MVC使用CDN位置而不是本地版本。如果BundleTable.EnableOptimization设置为false,则本地版本将自动用作后备版本,因为cdn版本是缩小版本。
阅读此博客可清楚了解您的想法:
http://www.techjunkieblog.com/2015/06/aspnet-mvc-5-configure-bundleconfig.html
据我所知你不能。但是您可以保留一个 cdns 表并在加载捆绑包时进行填充。当您希望使用新版本时,请添加/替换数据库中的条目。
//get from db
List<string> cdns = new List<string>();
foreach (string cdn in cdns)
{
bundles.Add(new ScriptBundle("~/bundles/jquery",cdn).Include("~/Scripts/jquery-{version}.js"));
}
Run Code Online (Sandbox Code Playgroud)我同意最重要的部分。对于问题中不存在的部分,请向下滚动并阅读“使用 CDN”。有一个例子展示如何检查。我认为您基本上需要有一个本地副本作为您可以引用另一个 CDN 的备份。