Pourquoi les gens minifient les actifs et pas le HTML?

pourquoi les gens suggèrent-ils de minifier les ressources web, comme CSS et JavaScript, mais ils ne suggèrent jamais que le markup soit minifié? CSS et JavaScript peuvent être utilisés sur de nombreuses pages diverses tandis que le markup est chargé à chaque fois, ce qui rend la minimisation du markup beaucoup plus important.

39
demandé sur Salvador Dali 2009-08-20 19:03:28

6 réponses

une des raisons probables est que le balisage change généralement beaucoup plus souvent, et devrait être réduit au minimum pour chaque chargement de page. Par exemple, sur une page de débordement de pile donnée, il y a des horodatages, des noms d'utilisateur et des comptes de rep qui peuvent changer avec chaque chargement de page, ce qui signifie que vous devriez miniifier pour chaque chargement de page aussi. Avec "statique" comme les fichiers css et javascript, vous pouvez rapetisser beaucoup moins souvent, donc, dans l'esprit de certains, il vaut la peine de travail à l'avant.

Consider de plus, tous les principaux serveurs web et navigateurs prennent en charge gzip, qui comprime tout votre balisage ( rapidement ) à la volée de toute façon. Parce que minifying est plus lent et beaucoup moins efficace que gzipping de toute façon, les webmasters peuvent décider que minifying pour chaque chargement de page ne vaut pas le coût de traitement.

23
répondu Triptych 2009-08-20 15:40:29

les réponses écrites ici sont extrêmement dépassées ou même parfois n'ont pas de sens. Beaucoup de choses ont changé par rapport à l'ancien 2009, donc je vais essayer de répondre correctement.

courte réponse - vous devriez certainement minifier HTML . Il est trivial aujourd'hui et donne environ vitesse de 5% . Pour une réponse plus longue, lire la réponse complète

de retour dans les vieux jours les gens étaient manuellement minifying css / js (en cours d'exécution au moyen d'un outil spécifique à rapetisser). C'était un peu difficile d'automatiser le processus et il fallait absolument des compétences. Sachant que beaucoup de sites de haut niveau, même en ce moment, n'utilisent pas gzip (ce qui est trivial), il est compréhensible que les gens étaient réticents à miniaturiser html.

alors pourquoi les gens minifient-ils js, mais pas html ? Quand vous miniifiez JS, vous faites les choses suivantes:

  • supprimer les commentaires
  • supprimer les blancs (onglets, espaces, nouvelles lignes)
  • changement des noms longs à courts ( var isUserLoggedIn à var a )

qui a donné beaucoup d'amélioration même à de vieux jours. Mais en html vous n'avez pas été en mesure de changer les noms longs pour court, aussi il n'y avait presque rien à commenter pendant ce temps. Donc la seule chose qui reste est d'enlever les espaces et les lignes. Ce qui ne donne qu'une petite amélioration.

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

un autre argument pour lequel il est inutile de faire la minification est qu'elle est fastidieuse. était peut-être vrai en 2009, mais de nouveaux outils sont apparus après cette période. Droite maintenant, vous ne devez pas manuellement rapetisser votre balisage. Avec des choses comme Grunt il est trivial d'installer grunt-contrib-htmlmin et de le configurer pour miniifier votre html. Tout ce que vous avez besoin est comme 2 heures pour apprendre grunt et configurer tout et ensuite tout se fait automatiquement en moins d'une seconde. Sons que 1 seconde (que vous pouvez même automatiser pour ne rien faire avec grunt-contrib-watch ) n'est pas vraiment si mauvais pour environ 5% d'amélioration (même avec gzip).

un argument de plus est que CSS et JS sont statiques , et HTML est généré par le serveur de sorte que vous ne pouvez pas le pré-minifier. Cela était également vrai en 2009, mais actuellement plus et plus les sites ressemblent à une application d'une seule page, où le serveur est mince et le client fait tout le routage, les Templiers et toute la 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.

pour finir mes pensées:

  • google est minifying html.
  • pageSpeed est de demander à votre minifier html
  • il est trivial de faire
  • il donne ~5% de l'amélioration
  • ce n'est pas la même que gzip
28
répondu Salvador Dali 2014-03-17 04:06:10

considérez ceci:

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Demo</title>
<link rel="stylesheet" type="text/css" href="nonminify.css"/>
</head>
<body>
<div title="My   non   minifiable   page">
    <p class="http://www.example.com/classes/class/lorem-ipsum">

            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.

    </p>
</div>
</body>
</html>

avec ce fichier css:

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

étant donné que, il est effectivement impossible pour un minificateur HTML qui ne peut voir le fichier HTML pour trouver quoi que ce soit qu'il peut minifier en toute sécurité.

12
répondu Alohci 2009-08-20 21:28:09

je suppose que c'est difficile parce que parfois des choses comme l'espace blanc est utilisé pour le formatage, peut-être en fonction de doctype.

5
répondu Kieron 2009-08-20 15:06:30
5
répondu Will Peavy 2011-05-03 02:11:48

Markup tend à être généré dynamiquement ces jours-ci, et même quand statique Il ya habituellement un tas de pages. JavaScript et CSS sont généralement minimisé dans un fichier par site et beaucoup plus facile à rapetisser manuellement (ou script).

3
répondu ceejayoz 2009-08-20 15:05:57