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
GetHTMLTextHeightGetHTMLTextWidthGetHTMLTextLineCountDrawHTMLTextDrawHTMLTextBoxDrawHTMLTextMatrixDrawHTMLTextBoxMatrix
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