Y a-t-il un avantage à minimiser JavaScript avant de le gzipping?
Y a-t-il un but valide à réduire avant de compresser? Il semble hautement improbable que le fichier gzippé soit plus petit s'il est minifié en premier.
Je demande parce que diagnostiquer les problèmes de production dans le code minifié est beaucoup plus difficile, et je me demande si les gens se soumettent à cela sans but.
5 réponses
Oui, il y a certainement un avantage.
Minifying est une compression avec perte alors que gzipping est sans perte. Ergo, avec minifying vous supprimez les données inutiles (comme les commentaires et les noms variables longs) qui aideront toujours à rendre votre fichier plus petit. Même avec gzip il y aura toujours une différence dans la plupart des cas.
Exemple:
function foo(this_is_my_variable){
var this_is_my_other_variable = 0;
this_is_my_other_variable = this_is_my_other_variable + this_is_my_variable;
return this_is_my_other_variable;
}
Qui pourrait être minifié à:
function foo(a){
var b = 0;
b = b +a;
return b;
}
, Ou si le minifier est intelligent:
function foo(a){
return a;
}
Tout le code donne les mêmes résultats, mais la taille diffère beaucoup.
En ce qui concerne la taille du fichier raw, voici un exemple (jquery 1.4.2):
$ curl http://code.jquery.com/jquery-1.4.2.js | gzip > jquery.gz
$ curl http://code.jquery.com/jquery-1.4.2.min.js | gzip > jquery-min.gz
$ ls -la jquery*
-rw-r--r-- 1 me staff 24545 Apr 7 12:02 jquery-min.gz
-rw-r--r-- 1 me staff 45978 Apr 7 12:02 jquery.gz
Donc la version minifiée est environ la moitié de la taille.
Peut-être. Au-delà de la suppression des espaces, la réduction de JavaScript peut entraîner plus de répétitions du même texte, ce qui peut signifier une compression légèrement plus élevée avec gzip. Heureusement, il est facile de faire un avant-et-après puisque l'outil de ligne de commande gzip
, commun dans * nix et disponible pour Windows utilise le même algorithme de compression (mais pas exactement le même format).
, Il peut également aider à accélérer l'analyse du code javascript dans le navigateur. Selon la taille de vos fichiers, le navigateur peut passer beaucoup de temps à analyser et à tokeniser le fichier qui sera réduit en minimisant.
Bien sûr, seuls l'analyse comparative et le profilage vous diront si cela va réellement être un avantage pour votre situation particulière.
Ce que je trouve le mieux, c'est que je garde les versions minifiées et non minifiées de tous mes.fichiers js sur mon site web et il suffit d'utiliser un commutateur de configuration pour basculer entre les deux. De cette façon, la production normale peut utiliser la version minifiée, puis si je dois déboguer quelque chose, il suffit de retourner le commutateur et la version non minifiée est servie à la place. (Le processus de construction garantit que les versions minifiées et non minifiées sont synchronisées, bien sûr)
J'ai toujours vu une réduction notable du nombre final d'octets lorsque je réduis avant gzip.
J'ai un script PHP de travail de hack de 20 minutes qui s'interface avec le compresseur yui, et le compilateur de fermeture googles. Il me montre avant et après octets, y compris après gzip, donc assez facile pour moi de vérifier.