2009-10-18 5 views
3

Je viens de lire this article de Google. J'ai toujours pensé que la fermeture des tags est importante pour garder les documents html propres et les rendre lisibles par machine. Mais ils recommandent le contraire.Omettre les balises optionnelles de html

Que pensez-vous de cela?

+3

Je ne ferais pas ça. Cela semble juste désordonné. –

Répondre

9

Google est dans une situation quelque peu inhabituelle en ce sens qu'ils servent tellement de copies de leurs principales pages de recherche que toute petite économie de la taille de la page s'additionner bientôt. Cela signifie pour eux qu'il est économique de réduire la taille de leurs pages en supprimant les balises proches et les espaces blancs, au prix de les rendre plus difficiles à maintenir.

Vous n'êtes pas Google; il est peu probable que cela rapporte pour vous. Vous remarquerez que la page Google que vous liez à elle-même n'omet pas les tags qu'elle recommande, car ce n'est pas l'une des pages critiques que Google utilise le plus. Comparez cela à l'extrême minification de la page d'accueil www.google.com.

Utilisez la compression gzip/deflate et vous obtiendrez déjà une taille de transfert minimale; Réduire le balisage est une mesure désespérée qui, à moins de servir des charges, sera une optimisation prématurée.

3

Cela dépend entièrement de votre doctype. Si vous utilisez HTML 4 transitionnel, alors oui, vous pouvez laisser des balises de fin. Si vous utilisez XHTML ou HTML 4 strict, alors non, fermez vos tags.

+0

Je n'ai pas regardé, mais HTML5 nécessite-t-il des étiquettes? –

+1

HTML5 ne change pas la situation; la sérialisation de style HTML peut omettre des balises, la sérialisation XHTML5 ne peut pas. – bobince

+0

Je développe des applications CMS. Je recommanderai toujours que les balises soient correctement fermées. Parce que si vous avez un jour besoin de transférer du contenu, il est BEAUCOUP plus facile d'analyser quelque chose qui est structuré XML que quelque chose qui se termine juste. Je pense à des étiquettes comme des parenthèses. Ils ont un {et un}. – BerggreenDK

0

Tant que vous vous conformez à la DTD, je suis d'accord avec essayer de minimiser le fouillis. Personnellement, je ne l'ai jamais vu quelqu'un utiliser un

</br> 

parseurs (devrait) analyser selon la DTD, de sorte qu'il sera toujours « lisible par machine ».

+2

En effet, les gens utilisent la version abrégée '
' –

+0

Je devrais préciser. Je n'ai jamais vu quelqu'un faire quelque chose comme

, habituellement je le vois juste comme
. –

+2

Il est utile de noter qu'en html il est ** interdit ** de fermer un élément 'BR'. Par opposition aux autres éléments (par exemple 'P') où l'étiquette de fermeture est facultative. –

0

Cet article suggère d'omettre l'étiquette de fin d'une paire d'étiquettes qui est mieux représentée comme un singleton pour commencer. Étant donné que les balises auxquelles il fait référence, avec la traversée, doivent être utilisées comme des singletons, et donc ne pas avoir de balise de fin, ce n'est pas une recommandation de meilleure pratique ou erronée. Je suggérerais complètement de ne pas tenir compte de cet article puisqu'il essaye de recommander une meilleure méthode qu'une pratique qui est complètement défectueuse pour commencer. Honnêtement, je ne vous suggère pas de prendre conseil sur le balisage de Google car ils ont choisi de ne tenir aucun compte de toute norme s'ils peuvent réduire le nombre de caractères servis à l'utilisateur final. Essayez de valider n'importe quel code et voyez par vous-même qu'il ne s'agit pas d'un exemple par lequel les meilleures pratiques de balisage doivent être traitées.

2

La spécification HTML vous permet d'omettre certaines balises de fin. En général, ce sont des balises qui ne peuvent pas s'auto-imbriquer et donc la balise de fermeture n'est jamais ambiguë. Prenez cet exemple:

<p>A paragraph of text. 
<p>Another paragraph of text.</p> 

<div>A divider element... 
<div>Another divider element...</div> 

Dans le premier exemple, quand vous arrivez à la deuxième <p>, cela signifie que le paragraphe précédent est terminée, parce que vous ne pouvez pas imbriquer les balises de paragraphe. Le navigateur interprète que:

<p>A paragraph of text.</p> 
<p>Another paragraph of text.</p> 

Dans le second exemple, mais le second <div> crée un élément div imbriqué et l'</div> ferme l'élément interne. Vous auriez besoin d'ajouter un autre </div> où vous vouliez que l'extérieur finisse. Cependant, après avoir dit tout cela, il sera probablement plus facile de fermer toutes les étiquettes que vous allez pour éviter tout problème. Cela dépend à quel point vous vous souviendrez de la liste blanche.Si vous oubliez, par exemple que div s doit toujours être fermé, vous allez gâcher votre mise en page sans fin. Et comme l'a dit Bobince, avec gzip, c'est un peu hors de propos. Si vous avez 30 paragraphes, la différence entre les versions avec et sans balises de fermeture serait de 120 octets. Cependant, si les deux sont gzippés, la différence va être minuscule - moins de 10 octets. Je suggère d'écrire du HTML mais vous êtes à l'aise.

Questions connexes