46 votes

Utilisation du CDN dans le bundle MVC script. Qu'est-ce que j'ai manqué ?

J'essaie d'utiliser un CDN pour charger jquery. J'ai lu este article et il semble que cela devrait être très simple.

Mon paquet script 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 dans 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 lorsque je regarde dans firebug, il semble que jquery soit chargé depuis localhost. firebug inspection

J'ai essayé avec les deux builds, realease et debug. Qu'est-ce qui me manque ? Je pense que cela devrait être assez simple. Merci.

46voto

Radovan Garabík Points 351

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

17voto

juFo Points 3779

En fait, vous pouvez écrire la méthode de @RaviGadag plus courte si vous utilisez une version récente de ASP.NET MVC. De cette façon, vous n'avez pas besoin d'écrire vous-même le fallback dans le Layout :

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

les versions de jquery disponibles dans le réseau de diffusion de contenu (CDN) : http://www.asp.net/ajax/cdn#jQuery_Releases_on_the_CDN_0

9voto

Ravi Gadag Points 9809

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

set BundleTable.EnableOptimizations = true; // si vous voulez utiliser le mode débogage

jQuery sera demandé à partir de l version de débogage de jQuery sera récupérée localement en mode débogage. Lorsque utilisez un CDN, vous devez disposer d'un mécanisme de secours au cas où le CDN échoue.

si la demande CDN échoue, vous pouvez fournir un callback.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X