2012-04-12 9 views
0

Ich erinnere mich, vor einiger Zeit gelesen, dass in einigen Fällen das Ende der End-Tags (</li>, zum Beispiel) beschleunigt das Rendern (und Laden/Parsen, da es weniger Bytes) von einer Webseite?Sollen die End-Tags weggelassen werden?

Leider habe ich vergessen, wo ich das lese, aber ich erinnere mich daran, dass diese Funktion spezifisch für HTML 4.0 war.

Da ich keinen Zugriff mehr auf diese Quelle habe, habe ich mich gefragt, ob jemand das bestätigen kann oder auf die Dokumentation auf w3c verlinke (da ich es selbst nicht finden konnte)?

Danke!


EDIT: vergessen zu erwähnen, dass ich wenn dieses Verhalten zu fragen, bedeuten auch in HTML5 zur Verfügung steht.


EDIT 2: manged ich die article wieder zu finden, und es tut erwähnt es nur beschleunigt die Download-Geschwindigkeit von der Seite, nicht tatsächlichen Rendering:

Einen guten Grund für das Weglassen Die End-Tags für diese Elemente bestehen darin, dass sie dem Seiten-Download zusätzliche Zeichen hinzufügen und so die Seiten verlangsamen. Wenn Sie nach Dingen suchen, die Sie tun können, um Ihre Webseiten-Downloads zu beschleunigen, sollten Sie die optionalen Closing-Tags loswerden. Bei Dokumenten mit vielen Absätzen oder Tabellenzellen kann dies zu erheblichen Einsparungen führen.

Entschuldigung für eine sinnlose Frage! :(

+2

welcher Geschmack von (x) html –

+0

@ DanielA.White HTML5, natürlich! : ^) – omninonsense

+1

Warum "natürlich"? Du hast in deiner Frage "vor einer Weile" gesagt. Nach allem, was wir wissen, könnten Sie über HTML 3.2 gesprochen haben! –

Antwort

2

Hier ist die Liste der HTML 4.01-Elemente.

http://www.w3.org/TR/html401/index/elements.html

Ende Tag Spalte sagt, wo End-Tags sind optional.
Beachten Sie jedoch, dass dies nur in HTML 4.01 gültig ist. In Xhtml sind alle End-Tags erforderlich. Nicht 100% sicher über HTML5.

Ich schrieb einmal einen HTML-Parser, und glauben Sie mir, wenn Sie ein Parser sind und Sie sind in einem <p> und Sie stoßen auf ein </table> End-Tag, ist es langsamer in Ihrem Dokument Baum einchecken, wenn das korrekt ist, und Wenn ja, schließen Sie zuerst die aktuelle <p>, als wenn Sie einfach auf eine </p> stoßen.

Edit:
Ah, fand es: http://dev.w3.org/html5/html-author/#index-of-elements
Gleiche Anforderungen wie HTML 4.01.

New edit:
Oh, das war eine Seite aus dem Jahr 2009. Dies mehr auf dem neuesten Stand ist:
http://dev.w3.org/html5/spec/syntax.html#optional-tags

+0

Das ist genau das, wonach ich gefragt habe! Mir schien es auch, als wäre es schneller * mit * endenden Tags! Deshalb haben die Experten gefragt, statt blind einen seltsamen Artikel zu glauben. Vielen Dank! – omninonsense

2

AFAIK, in XHTML müssen Sie immer mindestens selbst schließt einen Tag <img ... />

In HTML (nicht xml-html) einige Tags müssen nicht geschlossen werden. <img> zum Beispiel. Aber ich d vorschlagen darauf achten, dass Sie genau wissen, welche Version Sie Targeting und überprüfen, um Validierungsservice des W3C verwenden.

http://validator.w3.org/

ich sehe nicht, wie diese Dinge außer beschleunigen würde, dass Sie haben würde sende weniger Bytes pro Seite (no/s für einige Tags, keine schließenden Tags für andere). Wie für buildi Wenn ich das DOM kenne, kenne ich die Details einer bestimmten Implementierung (Webkit, Mozilla, etc) nicht, um zu wissen, welcher Weg schneller zu parsen ist. Ich würde mir vorstellen, XML ist einfach weil es regelmäßiger ist.

EDIT: Ja, dieses Verhalten ist in HTML5 verfügbar. Beachten Sie, dass die Hilfeseiten sind verwirrend, wie zum Beispiel:

http://www.w3schools.com/html5/tag_meta.asp

Metas in Nicht-XML-html nicht die/erfordern, aber sie können es haben. Aufgrund der (meiner Meinung nach) XML-artigen HTMLs ist der End-Schrägstrich in geschriebenem HTML häufiger, aber Sie können sehen, dass beide Stile im Dokument verwendet werden. Der Validator lässt Sie sicher wissen, was Sie erreichen können. :)

+0

Dies betrifft jedoch nicht die Frage, Tags selbst zu schließen, sondern nur 'selbstschließende Tags'. Ich weiß nicht, ob zum Beispiel Ps wie alte WordPerfect Absatz-Startcodes nicht geschlossen werden können. –

2

Einige Tags in irgendeiner Version der HTML-Spezifikation haben optionale End-Tags. Ich glaube jedoch, dass es allgemein als schlechte Form gilt, das End-Tag auszuschließen.

Wie bereits erwähnt, der End-Tag von li in HTML4 optional ist:

http://www.w3.org/TR/html401/struct/lists.html#h-10.2

so technisch ist diese gültig:

<ul> 
    <li> 
     text 
    <li> 
     <span>stuff</span> 
</ul> 

Aber Sie sparen nur 5 Zeichen pro li, nicht wirklich wert, was Sie an Lesbarkeit/Wartbarkeit verlieren.

EDIT: Die HTML5-Spezifikation ist irgendwie interessant:

ein Ende-Tag des li-Element kann entfallen, wenn das li Element sofort durch ein anderes Element li gefolgt, oder wenn es nicht mehr Inhalt in der Elternelement

+0

Tatsächlich ist die HTML5-Regel genau die gleiche wie in früheren Versionen. Es ist nur etwas genauer, was "optional" in diesem Zusammenhang bedeutet. – Alohci

2

Ending Tags zu beenden ist in der Regel von Browsern verzeihlich (es ist in der Regel intelligent genug, um zu wissen, was Sie tun). Alle css- oder js-Markup-Eigenschaften, die das nicht geschlossene Tag aufweist, können jedoch Nachkommen- und/oder Geschwister-Tags beeinflussen, sodass Sie sich den Kopf darüber kratzen, was passiert ist.

Während XHTML erwarten, dass Sie einen umschließenden Schrägstrich zu eigenständigen Tags hinzufügen, tut dies HTML 5 nicht.

XHTML: <img src="" /> 
HTML5: <img src=""> 
+1

+1. Insbesondere, um auf die Fehler mit CSS/JS und Nachkommen + Geschwister hinzuweisen. Es ist auch erwähnenswert, dass der Schrägstrich in HTML5 immer noch gültig ist. Es ist nicht erforderlich, aber es ist gültig. (Das ist gut, weil es bedeutet, dass existierender xhtml-Code in HTML5 konvertiert werden kann, ohne dass alle diese schließenden Tag-Marker entfernt werden müssen). – Spudley

+0

Vielen Dank für die Requisiten. –

2

Wenn Sie mit einem xhtml DOCTYPE schreiben, dann ist die Antwort "ja", sie sind erforderlich. Ein xhtml-Dokument muss gültiges XML sein, was bedeutet, dass alle Tags ordnungsgemäß geschlossen werden müssen.

Ein HTML-Dokument ist ein bisschen weniger pingelig. Einige Tags sind als "selbstschließend" angegeben, dh Sie müssen sie nicht explizit schließen. Dazu gehören <br>, <img> usw.

Die Browser sind in der Regel ziemlich nachsichtig, weil sie schlecht geschriebenen Code bewältigen müssen. Beachten Sie jedoch, dass das Überspringen von abschließenden Tags dazu führen kann, dass verschiedene Browser Ihren Code anders interpretieren und schwer zu debuggende Layoutfehler erzeugen.

In Bezug auf die Seitenladegeschwindigkeit könnten Sie recht haben, dass die Downloadgeschwindigkeit und die Bandbreitenkosten marginal steigen würden, aber es wäre marginal. In Bezug auf das Rendering, ich vermute, dass Sie tatsächlich Geschwindigkeit verlieren würden, wenn Sie ungültiges HTML zur Verfügung stellen, da der Browser härter arbeiten müsste, um es zu analysieren.

Also, auch wenn es einen Geschwindigkeitsgewinn gibt, wird es marginal sein, und ich denke nicht, dass das absichtliche Schließen von Tags eine lohnende Übung ist. Es kann möglicherweise hilfreich sein, die Bandbreite zu reduzieren, wenn Sie eine Website mit starkem Traffic betreiben, aber nur wenige von uns schreiben für Facebook oder Google. Für praktisch alle anderen ist es besser, gültigen Code zu schreiben als zu versuchen, diese wenigen Bytes zu rasieren.

Wenn Sie sich Sorgen über die Bandbreiten- und Seitenladegeschwindigkeit machen, gibt es wahrscheinlich andere bessere Möglichkeiten, die Seitenladegrößen zu reduzieren. Wenn Sie beispielsweise Ihre Dateien mit gZip komprimieren, wird die Bandbreite drastisch reduziert, ohne dass sich dies auf Ihren Code oder den Browser auswirkt. Die gZip-Komprimierung kann in Ihrem Webserver konfiguriert werden, so dass Sie sie einfach einschalten und vergessen. Sie können auch Ihren CSS- und JS-Code minimieren, indem Sie unnötigen Leerraum entfernen. (HTML kann auch zu einem gewissen Grad verkleinert werden, aber hüte dich davor, dass Leerraum in HTML syntaktisch relevant ist, so dass die Minimierung in jedem Fall nicht das Richtige ist).

+0

Oh, die Frage war rein theoretisch oder "akademisch". Ich weiß, dass die Geschwindigkeitsgewinne marginal sind. Ich war einfach neugierig, welches die bessere Wahl wäre. – omninonsense

Verwandte Themen