HTML layout caching
HTML-tekst, prestaties, pagina-indeling
Beschrijving
HTML-meet- en tekenmethoden delen automatisch begrensde gecachte layoutplannen per painter
Een eerste verzoek parseert de bron, lost CSS op, berekent regel-, Flexbox-, Grid-, tabel- en voetnootgeometrie en legt de resulterende tekst-, afbeeldings-, rand-, achtergrond- en koppelingsoperaties vast zonder naar de contentstream van de pagina te schrijven
Een overeenkomend tekenverzoek speelt die operaties op de gevraagde positie af in plaats van de HTML opnieuw te parsen of te meten
Beïnvloede methoden
GetHTMLTextHeightGetHTMLTextWidthGetHTMLTextLineCountDrawHTMLTextDrawHTMLTextBoxDrawHTMLTextMatrixDrawHTMLTextBoxMatrix
Cache-identiteit
Plannen worden gematcht op de volledige HTML-bron, de beschikbare breedte, de optionele vervolg hoogte, de fontset, de tekstspatiëring, de equivalent-tag-regels, de gebonden afbeeldings-ID's en -afmetingen en de kerningmodus De tekenpositie is bewust uitgesloten, zodat één gemeten plan op meerdere locaties kan worden afgespeeld zonder de regeleinden te veranderen
De tekenpositie is opzettelijk uitgesloten, zodat één gemeten plan op meerdere locaties kan worden afgespeeld zonder regeleinden te wijzigen
Eén plan dat groter is dan het geheugenbudget blijft beschikbaar voor zijn directe tekening en wordt door latere activiteit vervangen, zodat de cache niet documentbreed onbegrensd groeit
Meetveiligheid
Meting registreert opgemaakte backgrounds, tabelranden, afbeeldingen en links als uitgestelde bewerkingen en voegt ze niet toe aan de geselecteerde pagina
Een enkel plan groter dan het geheugendoel blijft beschikbaar voor zijn directe tekening en wordt door latere activiteit vervangen, zodat een onbegrensde cache over het hele document wordt vermeden
Meetveiligheid
Meting legt gestylede achtergronden, tabelranden, afbeeldingen en koppelingen vast als uitgestelde operaties en voegt ze niet toe aan de geselecteerde pagina
Vervolgresultaten van DrawHTMLTextBox worden opgeslagen met hetzelfde op hoogte begrensde plan dat wordt afgespeeld