I Hate Waiting

Ускоряет загрузку страниц: защита LCP, корректный lazy-loading, приоритет видео на хостингах.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Advertisement:

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

Advertisement:

Autor
ktt21
Instalaciones diarias
6
Instalaciones totales
419
Calificaciones
3 0 0
Versión
3.5.2
Creado
28/03/2026
Actualizado
21/06/2026
Tamaño
166 KB
Compatibilidad
Compatible con Firefox Compatible con Chrome Compatible con Opera Compatible con Safari Compatible con Edge
Licencia
MIT
Funciona en
Todos los sitios

I Hate Waiting

Цель: ускорить загрузку страниц: на видеохостингах — приоритет главному видео, на остальных — приоритет видимому контенту.


Что делает скрипт «I Hate Waiting»?

Ускоряет загрузку и отображение любых сайтов. Работает незаметно в фоне с первой миллисекунды открытия страницы.

Ключевые улучшения по сравнению с серфингом без скрипта:

  • На видеохостингах (YouTube, Rutube, Twitch, Vimeo, Odysee и др.) скрипт находит главный плеер на странице и принудительно ставит ему максимальный приоритет загрузки — видео начинает буферизоваться раньше, чем загрузятся баннеры, рекомендации и прочий контент страницы. На YouTube дополнительно отключается внутренняя система сбора метрик ytcsi/ytStats, которая работает в фоне и потребляет CPU; ускоряется загрузка рекомендаций и комментариев через content-visibility:auto. Для ускорения воспроизведения осуществляется «прогрев» CDN соединений: статических — до начала воспроизведения, динамических — в момент начала загрузки видео через PerformanceObserver (определяет реальный CDN-хост первого сегмента). На OK.ru главное видео дополнительно отслеживается через стандартный механизм всплытия событий (W3C MediaEvents) из Shadow DOM плеера.

  • На обычных сайтах (статьи, новости, блоги, форумы) картинки и iframe вне видимой области экрана не загружаются, пока пользователь до них не доскроллит — браузер направляет весь доступный канал на то, что видно прямо сейчас. Картинки первого экрана грузятся с максимальным приоритетом. На медленном соединении — проактивно, при появлении элемента в DOM; на быстром — реактивно, через LCP Observer после первой отрисовки (флаг LCP_IMAGE_BOOST).

  • На всех сайтах скрипт блокирует отправку данных популярным трекерам аналитики (Google Analytics, Яндекс.Метрика, Facebook Pixel, Hotjar и др.) и удаляет их элементы из DOM до того как они успевают загрузиться. Внешние веб-шрифты не блокируют рендер текста — страница показывает текст системным шрифтом немедленно, а веб-шрифт догружается в фоне. Плавный скролл (scroll-behavior: smooth) заменяется на мгновенный отклик (кроме чатов, где это важно для UX).

  • Хост-специфичные оптимизации для VK/OK.ru (скрытие скелетонов и рекламы через CSS), Rutube (изоляция плеера, блокировка рекламы), Яндекс/Dzen (скрытие рекламных меток через ARIA и data-атрибуты), YouTube (расширенный набор блокировок рекламных элементов, endscreen, pause-overlay).

  • После загрузки страницы скрипт в фоне резолвит DNS для доменов ссылок на уже просмотренных экранах — переход по ссылке будет быстрее.

  • Оценка качества соединения происходит однократно при старте: через тип соединения ОС, TTFB (с учётом редиректов) и показатели RTT/downlink. На медленном соединении применяются более агрессивные стратегии приоритизации.

  • Может ставить видео на паузу (кроме PiP «картинка-в-картинке»), если вы переключаетесь на другую вкладку — для экономии трафика и ресурсов (флаг PAUSE_ON_HIDDEN, по умолчанию включено).

  • В режиме EXTREME (ON[E]) дополнительно: скрипты сторонних доменов получают низкий приоритет загрузки, при этом собственные модули сайта (Vue/React/Next.js чанки) защищены от занижения приоритета (флаг SAME_ORIGIN_SCRIPT_PROTECT).


Как скрипт определяет видеохостинги

  • Полный домен видеохостинга — массив VIDEO_HOSTS
  • URL содержит ключевые слова (video, stream, clip, watch…) — массив VIDEO_PATH_SEGMENTS
  • Поддомены-исключения (например, AI-чат alice.yandex.ru) — массив VIDEO_HOST_EXCEPTIONS
  • Известные AI-чаты — множество CHAT_SKIP_HOSTS (для них отключаются scroll-оптимизации)
  • CDN видеохостингов — единый словарь VIDEO_CDN_MAP (служит и для статического preconnect)

Если часть страницы не открывается из-за блокировки аналитики — закомментируйте элемент в массиве TRACKERS. Если изменились CDN видеохостинга — обновите VIDEO_CDN_MAP.


Кнопка и режимы

При долгом нажатии (4 сек) на кнопку отображаются показатели загрузки страницы:

  • TTFB мс — время запроса-ответа от сервера (с учётом редиректов)
  • DOM kb — количество элементов DOM (насколько тяжёлый сайт)
  • ×Blocks — количество заблокированных элементов аналитики
  • mode — текущий режим; для Auto показывается фактический (ON или ON[E])

Кнопка циклически переключает режимы:

ON[A] → OFF → ON → ON[E] → ON[A]…

Режим Описание
ON[A] Auto — автоматически выбирает ON для Desktop или ON[E] для Mobile
ON Стандартные оптимизации без изменения визуального оформления сайта
ON[E] Extreme — всё что в ON + деприоритизация сторонних скриптов, упрощение визуального оформления; подходит для медленного интернета или Mobile
OFF Скрипт отключён для этого сайта; используйте если страница отображается некорректно

Тонкая настройка (для продвинутых пользователей)

DEBUG = false (по умолчанию) Отображение в консоли (F12) метрик производительности: TTFB, load time, LCP-буст (кто назначил приоритет — браузер или IHW), качество соединения (_isSlow), защита собственных скриптов (SOP), canplay время плеера. Полезно для оценки эффекта на конкретной странице.

PAUSE_ON_HIDDEN = true (по умолчанию) При переключении на другую вкладку ставит видео на паузу, при возврате — возобновляет. Не влияет на PiP. Работает на YouTube и Twitch. Отключите если сайт сам управляет паузой.

LCP_IMAGE_BOOST = true (по умолчанию) На обычных сайтах (Mixed Content) повышает приоритет загрузки главного изображения страницы (LCP-кандидата). Стратегия зависит от скорости соединения: на медленном — проактивно при появлении элемента, на быстром — реактивно через LCP Observer.

SAME_ORIGIN_SCRIPT_PROTECT = true (по умолчанию) В режиме ON[E] защищает скрипты собственного домена сайта (бандлы Vue/React/Next.js) от занижения приоритета. Без этого гидратация SPA-сайтов в EXTREME режиме могла задерживаться.

DYNAMIC_PRECONNECT_LIMIT = 3 Максимальное количество динамических preconnect-соединений к CDN видео. Браузер поддерживает ограниченное число параллельных соединений — не превышайте 3.

BTN_BOTTOM = '70px' Расстояние от нижнего края экрана до кнопки режима. Измените если кнопка перекрывает элементы сайта.

VIDEO_CDN_MAP Словарь CDN-доменов для каждого видеохостинга. Используется для статического preconnect (до начала воспроизведения). Если CDN изменились — обновите здесь.

STATIC_DELAYS Задержки (мс) для статического preconnect отдельных хостов или CDN. Например, для TikTok задержка 200мс предотвращает занятие HTTP/2-слотов при старте страницы.