max / I Hate Waiting

Install steps: Install a userscript manager, select Install, then open a website matched by the script.

Brugerscript Begyndere HOWTO Chrome Edge Firefox

Udgivet:

version: 3.6.0.1+b507e79 opdateret

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

Licens: MIT

Antifunktion: uspecificeret

Source and freshness

The following figures come from the original source and are separate from activity on this site.

Original script: I Hate Waiting

Source version: 3.5.11

Last source check:

Last successful check:

Source daily installs
0
Source total installs
0
OpenUserJS install requests
0

Requests received by this site are not proof that a user completed installation.

Clicking Install records a request on this site; it does not confirm installation. Not working after install? View troubleshooting and issues

I Hate Waiting

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


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

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

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

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

  • На портал-агрегаторах с множественными источниками (LordFilm, Zetflix, Kinogo, LiveTV.sx, Smotret.tv и их известные зеркала), где у фильма или канала есть несколько альтернативных источников воспроизведения на выбор пользователя (вкладки-трансляторы, кнопки качества/источника), скрипт отслеживает, какой источник сейчас активен, и заново «прогревает» соединение при каждом переключении — даже если переключение не меняет URL страницы. Если выбранный источник напрямую достижим со страницы — его хост получает динамический preconnect; если реальный поток отдаётся через вложенный same-origin фрейм, внутрь которого скрипт намеренно не заходит (чтобы не запускать свою полную копию в каждом встроенном фрейме на каждом сайте), вместо этого повышается приоритет загрузки самого этого фрейма — чтобы цепочка доставки за ним стартовала раньше.

  • На обычных сайтах (статьи, новости, блоги, форумы) картинки и 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), а также портал-агрегаторы LordFilm/Zetflix-класса, упомянутые выше.

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

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

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

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


Поддерживаемые видеохостинги (из коробки)

Видеохостинги напрямую: YouTube, Rutube, Twitch, Vimeo, Odysee, TikTok, Bilibili, Dzen, VK, OK.ru, Видео Mail.ru, Кинопоиск, Rambler Платформа и другие, определяемые универсально по структуре URL/страницы (см. ниже) даже без явной записи.

Портал-агрегаторы с множественными источниками: LordFilm (+ зеркала: lordfilm.fi, lordfilms.lt, lordfilm.top, lordfilm.hk, llordfilm.ru), Zetflix, Kinogo (+ зеркала: kinigo.ec, kinogo.pl, kinogo.parts, kinogo.eu, kinogo.la, kinogo.film, kinogo.se, kinogo.net), LiveTV.sx, Smotret.tv.

Список пополняется — точный актуальный перечень смотрите в VIDEO_HOSTS в коде скрипта


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

  • Полный домен видеохостинга — массив 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 время плеера, а на портал-агрегаторах — ещё и каждое обнаруженное переключение источника с результирующим preconnect. Полезно для оценки эффекта на конкретной странице.

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-слотов при старте страницы.

Bedømmelse: 0