web-dev-qa-db-fra.com

Le bundle ASP.net réduit-il automatiquement les fichiers?

J'utilise ASP.net MVC 4. Comme l'indique la question, si je mets un tas de fichiers JS (ou CSS, d'ailleurs) dans un bundle, est-ce que automatiquement sera minifié? Par exemple, si mon forfait se lit comme suit:

        bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
            "~/Scripts/jquery-masked.js"
            "~/Scripts/jquery.idletimer.js"
            ));

Ou devrait-il inclure à la place les fichiers minifiés initialement:

        bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
            "~/Scripts/jquery-masked.min.js"
            "~/Scripts/jquery.idletimer.min.js"
            ));

??

Edit: Maintenant, je me demande si le regroupement des fichiers .min ajoute à la place une optimisation. Cela augmentera-t-il les performances, y compris les fichiers .min de l'ensemble au lieu des fichiers de base? (Peut-être que la "fonction minifier" prend un certain temps?)

25
AlbatrossCafe

Le bundle Asp.Net regroupe tous les scripts du même bundle dans un seul fichier, répertoriés dans l'ordre dans lequel ils sont définis dans le bundle. Ce fichier unique est ensuite minifié et remis au client.

Si vous incluez à la fois les versions normale et réduite d'un script dans votre répertoire de scripts, le bundle déploiera automatiquement le script complet pendant les sessions de débogage et la version réduite pendant la production. Vous devez éviter de faire référence aux versions minifiées de vos scripts dans la configuration du bundle, sauf si vous souhaitez que la version minifiée soit déployée dans vos sessions de débogage.

24
Claies

Vous n'avez pas à inclure de fichiers minifiés, cela se fait automatiquement par le bundle engine. En fait, je me souviens que l'inclusion de fichiers minifiés a causé des problèmes (peut-être que cela est résolu sur la dernière version mvc)

Vous pensez peut-être que cela ne fonctionne pas, car les optimisations (regroupement et réduction) ne sont effectuées que lorsque debug=false sur web.config.

<system.web>
     <compilation debug="false" />
</system.web>

Il existe un moyen de forcer les optimisations même lorsque debug = true en utilisant BundleTable.EnableOptimizations. Voici un exemple

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                 "~/Scripts/jquery-{version}.js"));

    BundleTable.EnableOptimizations = true;
}
26
Claudio Redi

Ce sont deux termes différents appelés regroupement et minification.
Minification: est-ce que vous avez réduit les versions des fichiers JS où vous compressez le contenu en renommant les variables.
Bundling: c'est tout à fait différent. Pour réduire les allers-retours réseau, il est préférable de tout combiner en un seul fichier et de le télécharger sur le client en une seule demande.

Vous pouvez donc regrouper la version minifiée de JS pour bénéficier de cet avantage.

3
vendettamit