Pourquoi les gens minimentent les actifs et non le HTML?

Pourquoi les gens suggèrent-ils de réduire les ressources Web, telles que CSS et JavaScript, mais ils ne suggèrent jamais que le balisage soit réduit? CSS et JavaScript peuvent être utilisés sur de nombreuses pages différentes pendant que le balisage est chargé à chaque fois, ce qui rend la minification du balisage beaucoup plus importante.

Une des raisons probables est que le balisage change généralement beaucoup plus souvent et devrait être réduit pour chaque chargement de page. Par exemple, sur une page de débordement de stack donnée, il existe des horodatages, des noms d’utilisateurs et des comptages de répétitions qui peuvent changer à chaque chargement de page, ce qui signifie que vous devez également réduire la taille de chaque chargement de page. Avec des fichiers “statiques” comme css et javascript, vous pouvez réduire le nombre de fichiers beaucoup moins souvent.

Considérez également que tous les principaux serveurs Web et navigateurs supportent gzip, qui compresse tout votre balisage ( rapidement ) de toute façon. Étant donné que la minification est plus lente et beaucoup moins efficace que le gzipping de toute façon, les webmasters peuvent décider que la réduction de la taille de chaque chargement de page ne vaut pas le coût du traitement.

Les réponses écrites ici sont extrêmement obsolètes ou même parfois n’ont pas de sens. Beaucoup de choses ont changé depuis 2009, alors je vais essayer d’y répondre correctement.

Réponse courte – vous devriez certainement réduire le code HTML . C’est sortingvial aujourd’hui et donne environ 5% d’accélération . Pour une réponse plus longue, lisez la réponse complète

Autrefois, les utilisateurs mincalisaient manuellement les css / js (en les exécutant avec un outil spécifique pour le réduire). Il était difficile d’automatiser le processus et certaines compétences étaient indispensables. Sachant que beaucoup de sites de haut niveau, même en ce moment, n’utilisent pas gzip (ce qui est sortingvial), il est compréhensible que les gens soient réticents à minimiser le HTML.

Alors, pourquoi les gens minaient-ils js, mais pas html ? Lorsque vous réduisez JS, vous faites les choses suivantes:

  • supprimer les commentaires
  • supprimer les blancs (tabs, espaces, nouvelles lignes)
  • changer les noms longs en short ( var isUserLoggedIn en var a )

Ce qui a apporté beaucoup d’amélioration, même au bon vieux temps. Mais en HTML, vous ne pouviez pas changer les noms longs pour faire court, mais il n’y avait presque rien à commenter pendant ce temps. Donc, la seule chose qui rest est de supprimer les espaces et les nouvelles lignes. Ce qui ne donne que peu d’améliorations.

Un argument erroné écrit ici est que parce que le contenu est servi avec gzip, la minification n’a pas de sens. C’est totalement faux. Oui, il est logique que gzip diminue l’amélioration de la minification, mais pourquoi devriez-vous gipper des commentaires, des espaces blancs si vous pouvez les couper correctement et gzip seulement la partie importante. C’est la même chose que si vous avez un dossier à archiver qui contient des conneries que vous n’utiliserez jamais et que vous décidez de le compresser au lieu de le nettoyer et de le zipper.

Un autre argument expliquant pourquoi il est inutile de procéder à une minification est qu’il est fastidieux. Peut-être était-ce vrai en 2009, mais de nouveaux outils sont apparus après cette période. À l’heure actuelle, vous n’avez pas besoin de réduire manuellement votre balisage. Avec des choses comme Grunt, il est sortingvial d’installer grunt-consortingb-htmlmin et de le configurer pour minimiser votre code HTML. Tout ce dont vous avez besoin, c’est 2 heures pour apprendre le grognement et pour tout configurer, puis tout se fait automatiquement en moins d’une seconde. Sonner que 1 seconde (que vous pouvez même automatiser pour ne rien faire avec grunt-consortingb-watch ) n’est pas si grave pour environ 5% d’amélioration (même avec gzip).

Un autre argument est que CSS et JS sont statiques et que le HTML est généré par le serveur, vous ne pouvez donc pas le pré-minifier. Cela était également vrai en 2009, mais actuellement, de plus en plus de sites ressemblent à une application à une seule page, où le serveur est mince et le client fait tout le routage, la modélisation et toute autre logique. Donc, le serveur ne vous donne que JSON et le client le rend. Ici, vous avez beaucoup de HTML pour la page et différents modèles.

Alors pour finir mes pensées:

  • Google minifie le HTML.
  • pageSpeed demande à votre minifier html
  • c’est sortingvial à faire
  • cela donne ~ 5% d’amélioration
  • ce n’est pas la même chose que gzip

Considère ceci:

HTML:

    Demo    

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Avec ce fichier css:

 div[title="My non minifiable page"] p[class~="http://www.example.com/classes/class/lorem-ipsum"] { white-space:pre; } 

Compte tenu de cela, il est effectivement impossible pour un minificateur HTML qui ne peut voir que le fichier HTML de trouver quoi que ce soit qu’il puisse minifier en toute sécurité.

Je suppose que c’est difficile parce que parfois des choses comme le blanc sont utilisées pour le formatage, peut-être en fonction du type de document.

Page Speed ​​recommande de réduire le balisage:

http://code.google.com/speed/page-speed/docs/payload.html#MinifyHTML

Le balisage a tendance à être généré dynamicment de nos jours, et même lorsque statique il y a généralement un tas de pages. JavaScript et CSS sont généralement minifiés de manière un-fichier-par-site et donc beaucoup plus faciles à minifier manuellement (ou à scripter).