Подтвердить что ты не робот

Отложенные длительные задачи таймера, чтобы улучшить плавность прокрутки

Я просматривал свою страницу, и я получил это предупреждение:

Отложенная задача с большим сроком действия, чтобы улучшить гладкость прокрутки. См. Crbug.com/574343

Я также видел:

Blink отложил задачу, чтобы сделать прокрутку более гладкой. Чтобы избежать этого, ваши задачи таймера должны занимать менее 50 мс. Подробнее см. https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/rail и https://crbug.com/574343#c40.

Что это?

введите описание изображения здесь

4b9b3361

Ответ 1

Это происходит, когда Blink (механизм рендеринга Chrome) решает отложить выполнение таймера (например, функцию, переданную в requestAnimationFrame, setTimeout или setInterval), поскольку эти функции обычно принимают > 50 мс для выполнения и есть пользовательский сенсорный ввод. Это делается для приоритезации обработки ввода пользователем (например, прокрутки и метчики) над тем, что делает сайт.

Если вы столкнулись с этим сообщением, то, скорее всего, ваши пользователи получат подобное поведение. Здесь как воспроизвести этот сценарий:

  • У вас есть длительный javascript, который запускается через таймеры.
  • Быть на мобильном устройстве (или эмулировать его с помощью режима устройства DevTools).
  • Имейте сенсорный ввод, прокрутка пальцем вниз по экрану является самой надежной. Нажатие или отбрасывание страницы может также вызвать ее, но ее реже и труднее воспроизвести.
  • Экспериментальное дросселирование процессора devtools заставит JS занять больше времени и даст вам больше шансов увидеть его.

Метод как решить это непосредственно из проблемы с ссылкой в сообщении консоли вниз в комментарии 40:

  • Запишите временную шкалу на странице, которая запускает консольное сообщение об отсрочке.
  • Выберите всю временную шкалу и откройте панель "Журнал событий" в нижней части окна.
  • Введите "Таймер уволен" в текстовое поле фильтра. (См. Снимок внизу).
  • Ищите таймеры в списке, чье "Общее время" превышает 50 миллисекунд. Это проблематичные. (Обратите внимание, что таймеры, которые превышают 10 миллисекунд, также могут запускать это сообщение в некоторых случаях, когда браузер обрабатывает жест пользователя.)

Вы хотите, чтобы эти функции выполнялись быстрее или реже.

Фильтр с таймером на временной шкале