HTML layout caching

HTML-Text, Leistung, Seitenlayout

Beschreibung

HTML-Mess- und Zeichenmethoden verwenden automatisch gemeinsam genutzte, begrenzte zwischengespeicherte Layoutpläne für jeden Painter

Eine erste Anforderung analysiert die Quelle, löst CSS auf, berechnet die Geometrie von Zeilen, Flexbox, Grid, Tabellen und Fußnoten und zeichnet die resultierenden Text-, Bild-, Rahmen-, Hintergrund- und Linkvorgänge auf, ohne in den Seiteninhaltsstream zu schreiben

Eine übereinstimmende Zeichenanforderung gibt diese Vorgänge an der angeforderten Position wieder, anstatt das HTML erneut zu analysieren oder zu vermessen

Betroffene Methoden

Cache-Identität

Pläne werden anhand der vollständigen HTML-Quelle, der verfügbaren Breite, der optionalen Fortsetzungshöhe, des Schriftsatzes, der Textabstände, Regeln für äquivalente Tags, der Identitäten und Abmessungen gebundener Bilder sowie des Kerning-Modus abgeglichen

Die Zeichenposition ist absichtlich ausgeschlossen, sodass ein gemessener Plan an mehreren Positionen wiedergegeben werden kann, ohne die Zeilenumbrüche zu ändern

Das Ändern einer HTML-Schriftart, Bildbindung oder Regel für gleichwertige Tags löscht Pläne, die veraltete Objektverweise aufbewahren könnten

Grenzen und Verdrängung

Jeder Painter bewahrt höchstens acht kürzlich verwendete Pläne auf und begrenzt deren geschätzten Speicherbedarf normalerweise auf 32 MiB

Ein einzelner Plan, der größer als das Speicherziel ist, bleibt für seinen unmittelbaren Zeichenvorgang verfügbar und wird durch spätere Aktivität ersetzt, wodurch ein unbegrenzter dokumentweiter Cache vermieden wird

Messsicherheit

Die Messung zeichnet formatierte Hintergründe, Tabellenrahmen, Bilder und Links als verzögerte Vorgänge auf und hängt sie nicht an die ausgewählte Seite an

Fortsetzungsergebnisse von DrawHTMLTextBox werden mit demselben höhenbegrenzten Plan gespeichert, der erneut ausgeführt wird