web-dev-qa-db-fra.com

Utilisation de CDN dans le bundle de scripts MVC. Qu'est-ce que je rate?

J'essaie d'utiliser un CDN pour charger jquery. J'ai lu l'article this et cela semble être très simple.

Mon ensemble de scripts est défini comme suit.

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"));

Je l'inclus sur la page comme suit:

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

Mais quand je regarde Firebug, il semble que jquery soit chargé depuis localhost. firebug inspection

J'ai essayé à la fois avec les versions de version et de débogage. Qu'est-ce que je rate? Je pense que cela devrait être assez simple. Merci.

43
nixon

Exécutez votre application dans debug="false" mode ou utilisez BundleTable.EnableOptimizations = true;

45
imran_ku07

En fait, vous pouvez écrire à @RaviGadag sa méthode plus courte lorsque vous utilisez une version récente d'ASP.NET MVC. De cette façon, vous n'avez pas à écrire vous-même la solution de rechange dans la mise en page:

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

versions jquery disponibles dans le Content Delivery Network (CDN): http://www.asp.net/ajax/cdn#jQuery_Releases_on_the_CDN_

16
juFo

assurez-vous que vous n'êtes pas en mode débogage.

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

ensemble BundleTable.EnableOptimizations = true; // si vous souhaitez utiliser le mode débogage

jQuery sera demandé au CDN en mode de publication et la version de débogage de jQuery sera récupérée localement en mode de débogage. Lorsque vous utilisez un CDN, vous devez disposer d'un mécanisme de secours en cas d'échec de la demande de CDN.

si la demande CDN échoue, vous pouvez fournir un rappel

<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> 
8
Ravi Gadag