Pourquoi la minification HTML / Javascript est-elle bénéfique

14

Pourquoi la minification HTML / Javascript est-elle bénéfique lorsque le protocole HTTP prend déjà en charge la compression de données gzip?

Je me rends compte que la minification Javascript / HTML a le potentiel de réduire considérablement la taille des fichiers Javascript / HTML en supprimant les espaces inutiles, et peut-être en renommant les variables en quelques lettres chacune, mais l'algorithme LZW ne fait pas particulièrement bien quand il y en a beaucoup répétés caractères (par exemple, beaucoup d'espaces?)

Je me rends compte que certains outils de minification Javascript font plus que simplement réduire la taille. Le compilateur de fermeture de Google, par exemple, essaie également d'améliorer les performances du code en intégrant des fonctions et en effectuant d'autres analyses. Mais le but principal de la minification Javascript est généralement de réduire la taille des fichiers.

Je me rends également compte qu'il existe d'autres raisons que vous pourriez vouloir réduire en plus de performace, comme l'obscurcissement de code. Mais encore une fois, cette raison n'est généralement pas soulignée autant que le gain de performances et la réduction de la taille du fichier. Par exemple, Closure Compiler n'est pas annoncé comme un outil d'obscurcissement, mais comme un réducteur de taille de code et un accélérateur de vitesse de téléchargement.

Alors, combien de performances gagnez-vous vraiment avec la minification Javascript / HTML lorsque vous réduisez déjà considérablement la taille du fichier avec la compression gzip?

Channel72
la source

Réponses:

11

Parce que la compression gzip a sa propre surcharge (CPU). La minification est la première compression "suspendue" qui peut être appliquée sans que le CPU ne soit touché.

Ceux-ci peuvent sembler insignifiants, cependant, les chiffres ont rapidement un sens lorsque l'échelle est impliquée.

De plus, avec la minification, vous avez moins à gzip.

Nuit noire
la source
3
Les serveurs Web modernes gipperont-ils réellement les fichiers javascript pour chaque demande? Il semble probable qu'un serveur mettra en cache du contenu statique compressé, car il est peu probable qu'il change.
aaberg
@aaberg Néanmoins, ce sont davantage de données mises en cache sur le serveur. (pas que la mise en cache n'est pas bonne)
chills42
@ chilis42: Les serveurs peuvent servir des fichiers pré-compressés à partir du système de fichiers lui-même, si tel est le problème.
herby
+1 pour l'échelle. Si vous avez 10 utilisateurs et 100 hits par jour, ce n'est pas pertinent. Si vous avez besoin de 100 000 coups de serveur par heure, c'est une économie substantielle.
SoylentGray
2
Quelque chose me dit que l'exécution d'un compilateur JavaScript à grande échelle et de plusieurs exécutions d'optimisation sur la représentation interne, tout cela souvent implémenté en Java n'est pas une surcharge du processeur .
Oleg V. Volkov
5

Minification + gzip donne généralement de meilleurs résultats, car gzip est un algorithme général, non spécifiquement adapté à une entrée ou à une autre, tandis que le minificator est conscient de son contenu et peut faire un travail que l'algorithme de compression général ne peut pas. Il peut également se permettre de perdre (pensez: éliminer complètement les commentaires et les espaces blancs - c'est une compression à 100% pour ces données, comment pouvez-vous battre cela?), Tandis que la compression générale ne le peut pas.

Oleg V. Volkov
la source
2

Vous n'obtiendrez peut-être pas trop d'avantages en termes de performances, mais vous réduirez toujours votre utilisation de la bande passante. Si vous pouvez réduire de quelques ko vos fichiers js (et css) grâce à la minification (et l'utilisation de sprites css pour réduire le nombre de demandes) et que vous servez des milliers d'utilisateurs par jour, après un mois, vous réduirez considérablement votre bande passante.

Steve Whitehouse
la source
1
+1: La minification concerne les économies globales. Cela peut aider une demande individuelle à être plus rapide, mais l'objectif est de réduire l'utilisation de la bande passante au fil du temps.
Joel Etherton
1

La chose la plus coûteuse que vous faites dans une application Web est d'envoyer les choses sur le fil. Envoyer moins de trucs sur le fil est presque toujours un gain net si vous payez en cycles CPU.

De plus, je n'ai rien de scientifique à l'appui, mais je m'attends à ce que les outils de minification puissent probablement compresser javascript mieux que gzip si, pour aucune autre raison, les outils de minification sont spécifiques au domaine et peuvent être réglés pour mieux compresser javascript alors que gzip est un outil générique et compromettra au milieu.

Wyatt Barnett
la source