在MVC脚本捆绑使用CDN。 我在想什么?(Using CDN in MVC script bu

2019-07-21 13:31发布

我试图用一个CDN装载jQuery的。 我看了这个文章,这似乎应该是非常简单的。

我的脚本包定义如下。

bundles.UseCdn = true;
bundles.Add(new ScriptBundle("~/bundles/jquery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js").Include(
                        "~/Scripts/jquery-{version}.js"));

我包括在页面上,如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    @RenderSection("scripts", required: false)
</body>
</html>

但是,当我看萤火似乎jQuery是正在从本地主机加载的。

我试图与这两个realease和调试版本。 我在想什么? 我想,这应该是很简单的。 谢谢。

Answer 1:

运行在应用程序debug="false"模式或使用BundleTable.EnableOptimizations = true;



Answer 2:

其实你可以使用最新的ASP.NET MVC的版本时,写@RaviGadag他的方法更短。 这样,您就不必自己编写回退的布局:

public static void RegisterBundles(BundleCollection bundles)
{

  bundles.UseCdn = true;

  var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.3.min.js";
  var jqueryBundle = new ScriptBundle("~/bundles/jquery", jqueryCdnPath).Include("~/Scripts/jquery-{version}.min.js");
  jqueryBundle.CdnFallbackExpression = "window.jQuery";
  bundles.Add(jqueryBundle);

  // ...

  BundleTable.EnableOptimizations = true;
}

可用的jQuery版本在内容分发网络(CDN): http://www.asp.net/ajax/cdn#jQuery_Releases_on_the_CDN_0



Answer 3:

确保你是不是在调试模式。

  bundles.Add(new ScriptBundle("~/bundles/jquery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js")

设置BundleTable.EnableOptimizations = true; //如果你想使用调试模式

jQuery将来自CDN在释放模式而被要求和jQuery的调试版本将在调试模式在本地获取。 当使用CDN,你应该在情况下,CDN请求失败后备机制。

如果CDN请求失败,那么你可以提供一个回调

<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> 


文章来源: Using CDN in MVC script bundle. What am I missing?