Что делает suppressesIncrementalRendering? - PullRequest
0 голосов
/ 20 июня 2020

Я использую новейшие версии Xcode и Swift.

Я искал в Google, чтобы сделать свой KWWebView еще быстрее, и обнаружил следующее:

webConfiguration.suppressesIncrementalRendering = true

В документации говорится следующее:

Логическое значение, указывающее, подавляет ли веб-представление отображение содержимого, пока оно не будет полностью загружено в память.

Но что это означает? Означает ли это, что html не отображается и не отображается до тех пор, пока не все ресурсы, такие как изображения и файлы javascript, полностью загружены WKWebView?

1 Ответ

1 голос
/ 25 июня 2020

Как указано в документации, это флаг, указывающий механизму веб-просмотра ждать или нет, пока все не будет установлено и готово. сканировать ли документ (html + связанные ресурсы), чтобы периодически проверять, что нужно перерисовывать, или просто подождите, пока весь материал будет загружен и готов.

WebEngine:

Рендеринг - это прогрессивный процесс, который зависит от ресурсов (js, Css, изображений ...), из которых состоит страница. Важно понимать, что включение или выключение этой функции просто включит / выключит алгоритм рендеринга для загруженного контента.

Как сделать мою страницу быстрее?

Множество факторов, алгоритм рендеринга (движок), насколько тяжелые ваши скрипты (пакет, выделение памяти, прохождение и обработка событий и т. Д. c ..), размер изображений, насколько хорошо структурированы ваши CSS есть, и его иерархическая организация селектора (css синтаксический анализ и применение). Порядок, в котором ресурсы загружаются (включаются) на страницу.

Вы всегда можете проверить профилирование своей страницы в (например, devtools) в современном браузере, чтобы увидеть, как обстоят дела go, какой размер выделяемой памяти, размер пакета, время для написания сценариев, как страница спроектирована для потребления / использования ресурсов устройства.

Короче говоря:

Вообще говоря, есть ТРИ основные фазы с в общей сложности пять шагов , через которые ваша страница должна go при работе в браузере:

ФАЗА A: ПАМЯТЬ / РАСЧЕТ (ЦП)

1- Сценарии:

ФАЗА B: (В основном ОБРАБОТКА ЦП)

2- Стиль

3- Макет

ФАЗА C: (МОЩНОСТЬ ГП!)

4- Краска

5- Состав

Когда браузер решает обновить, он должен go через них, полный или частичный проход будет иметь много различий. эренс. рассмотрим следующий пример

, если у вас есть div, и вы решили создать анимацию, которая перемещает его от левого края экрана к правому краю, вы видите, что разработчики используют два подхода:

  • ТЕМ, КТО ПРОСТО НАПИСАТЬ КОД: со временем измените левое значение стиля div. (просто, верно?)

  • ТЕМ, КТО ЗНАЕТ МАТЕРИАЛ: выполните преобразование с помощью translateX или translate3D.

оба способа будут работать, первый будет съедать ваш процессор, а второй будет работать с очень высоким FPS.

ПОЧЕМУ?

Первый подход играет со священным левым значением, что означает браузеру придется пересчитать новое левое ( ШАГ1 )> проверить стиль ( ШАГ2 )> ЗАТЕМ создать новый МАКЕТ ( ШАГ 3)> Сделайте Paint ( step 4 )> ЗАТЕМ войдите в этап Composition ( STEP 5 )

это будет стоить полного прохода 5 этапов, что совершенно не нужно !!

Другой подход, с другой стороны, не потребует ничего, кроме композиции (один шаг №5), потому что манипуляции с матрицей в графическом процессоре (довольно сильная способность!) Может обрабатывать смещения, подразумеваемые с помощью translate3d или translateX !! вы увидите, как люди говорят о включении опоры translate3d в ваши CSS элементы для повышения производительности pu sh (да!), но настоящая причина в том, что объясняется выше. так что знание того, что происходит под капотом, может спасти вас.

...