Как узнать, когда браузер перестает перерисовывать слои / узлы DOM, потому что они скрыты?

Идентификация: яЯ смотрю на все возможные решения для обнаружения, когда падение FPS или перерисовки / перекомпоновки перестают происходить в браузере из-за оптимизации производительности браузера, потому что область документа не видна.

Наблюдение: Пока что большинство собственных HTML / JS-решений, которые я исследовал, не учитывают ту часть DOM, которая была скрыта другими частями страницы, или DOM, которая находится ниже сгиба. Хотя иногда содержимое будет непосредственно встроено в родительский документ, в других случаях оно может быть во фрейме или в фрейме.

Результаты теста: mozPaintCount является точным представлением повторов dom для окна и правильно реагирует, когда окно или документ в кадре скрыты. Также кажется, что Firefox правильно идентифицирует части dom и не перерисовывает их, когда они скрыты, что может быть визуально проверено с помощью инструмента инспектора firefox, когда что-то не видно, однако инспектор может не учитывать иерархию представления при рисовании основные моменты на перекрашенных областях. Слава тебе, Мозилла!

Ссылка:mozPaintCount

Вспышка также показывает замедление в FPS, когда он не на экране и новейшийFlash Player 11.2 имеет специальное событие, которое срабатывает, когда оно было задушено браузером по причинам оптимизации. Flash также не заслуживает доверия, потому что он отключен по умолчанию во многих браузерах.

Ссылка:Flash Player 11.2 Throttle Events

Текущая реализация браузером события изменения видимости страницы способна передавать, когда окно было изменено на другую вкладку или окно становится неактивным, но не учитывает положение прокрутки для элементов / окон / документов ниже сгиба или скрыто другими доминион Однако во втором проекте этой спецификации браузеру было предложено учитывать иерархию области просмотра и DOM, чтобы получить более точные результаты.

Рекомендации:Рекомендация Page Visibility, 2011 а такжеВидимость страницы проекта 2, 2013

CSS-переходы, по-видимому, не оптимизируются, когда их элементы скрыты, и поэтому они не могут быть правильно измерены. Я испробовал ряд различных свойств, которые вызывают перекомпоновку (высоту, ширину, тень от ящика и т. Д.), И не смог получить из них какой-либо значимой метрики.

requestAnimationFrame, по-видимому, регулирует анимацию только тогда, когда вкладка изменяется, а окно браузера становится размытым, но не обрабатывает содержимое ниже сгиба. Кроме того, поскольку raf присоединяется только на уровне окна, его невозможно привязать к конкретным dom-узлам (что может показаться недальновидным в его реализации).

Ссылка:requestAnimationFrame

Я еще не закончил тестирование WebGL, однако это будет ограничено небольшим количеством современных браузеров (приемлемый результат, учитывая флэш-решения для старых браузеров).

Я не закончил тестирование canvas, но это может быть хорошим решением, поскольку оно поддерживается более широким набором браузеров, чем WebGL.

Я даже не задумывался о вложенных объектах и о том, что они могли бы предоставить.

Я не изучал элементы управления ActiveX, чтобы увидеть, есть ли что-нибудь, что может помочь.

Я не смотрел в HTML5 видео.

Анимированные GIF-файлы могут быть оптимизированы только в Firefox. Слава снова, Мозилла!

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

Приветствуются любые мозговые штурмы о том, как браузеры на самом деле оптимизируют отображаемый контент, дополнительные указания или реальные ответы на этот вопрос.

Так же,вот старый вопрос ТАК что частично охватывает и этот вопрос.

Ответы на вопрос(2)

Ваш ответ на вопрос