HTML layout caching
HTML-текст, производительность, макет страницы
Описание
Методы измерения и рисования HTML автоматически разделяют ограниченные кэшированные планы разметки на каждом рендерере
Первый запрос разбирает источник, разрешает CSS, вычисляет геометрию строк, Flexbox, Grid, таблиц и сносок и фиксирует результирующие операции текста, изображения, рамки, фона и ссылки, не записывая в поток содержимого страницы
Соответствующий запрос рисования воспроизводит эти операции в запрошенной позиции вместо повторного разбора или измерения HTML
Затронутые методы
GetHTMLTextHeightGetHTMLTextWidthGetHTMLTextLineCountDrawHTMLTextDrawHTMLTextBoxDrawHTMLTextMatrixDrawHTMLTextBoxMatrix
Идентичность кэша
Планы сопоставляются по полному HTML-исходнику, доступной ширине, необязательной высоте продолжения, набору шрифтов, межтекстовым интервалам, правилам эквивалентных тегов, привязанным идентификаторам и размерам изображений и режиму кернинга. Позиция рисования намеренно исключена, поэтому один измеренный план можно воспроизвести в нескольких местах, не меняя разрывы строк
Позиция рисования намеренно исключена, поэтому один измеренный план можно воспроизвести в нескольких местах, не меняя переносов строк
Единственный план крупнее целевого объёма памяти остаётся доступным для немедленной отрисовки и вытесняется последующей активностью — это не даёт кэшу на весь документ расти без границ
Безопасность измерений
Измерение фиксирует стилизованные фоны, рамки таблиц, изображения и ссылки как отложенные операции и не дописывает их на выбранную страницу
Единственный план крупнее целевого объема памяти остается доступным для своего немедленного рисования и заменяется последующей активностью, что позволяет избежать неограниченного кэша на весь документ
Безопасность измерения
Измерение фиксирует стилизованные фоны, границы таблиц, изображения и ссылки как отложенные операции и не добавляет их на выбранную страницу
Результаты продолжения из DrawHTMLTextBox сохраняются с тем же планом, ограниченным по высоте, который и воспроизводится