Милые расширения для Chrome, которые не тормозят браузер
У декоративных расширений браузера есть репутация, и по большей части заслуженная: тяжёлые, болтливые, установленные со списком разрешений, который никто не читал. Обидно, ведь сама категория по-настоящему забавная, а всех этих проблем можно избежать.
Три вещи, которые стоит проверить
- Список разрешений. Chrome показывает его ещё до установки. Storage — это просто файл настроек. А вот tabs, cookies, history и webRequest — это те разрешения, которые позволяют расширению следить за тем, что вы просматриваете.
- Трогает ли оно вёрстку страницы. Расширение, которое вставляет элементы прямо в поток документа или измеряет положение элементов на каждом событии прокрутки, может заставить плавную страницу тормозить, сколько бы оно ни рисовало на самом деле.
- Куда оно отправляет запросы. Если у декоративного расширения оживлённая вкладка сети, значит оно втихую выполняет ещё какую-то работу, о которой вам не сказали.
Почему именно вёрстка бьёт больнее всего
Чтение свойства вёрстки — высоты элемента, его положения на экране — заставляет браузер сначала завершить всю отложенную работу по вёрстке, прежде чем он сможет ответить. Сделайте это внутри обработчика прокрутки — и вы попросите браузер останавливаться и измерять шестьдесят раз в секунду прямо посреди отрисовки страницы.
Именно этот механизм стоит за большинством жалоб вида «из-за этого расширения прокрутка дёргается», и он невидим, пока кто-нибудь не профилирует страницу. Решение прозаично: никогда не читать вёрстку во время прокрутки, писать только transform и оставить движение композитору.
Как это выглядит здесь
scrolldog — маленький пиксельный питомец, который бежит вдоль края каждой страницы со скоростью вашей прокрутки. Это ещё и наглядный пример разобранных выше проверок, потому что ему пришлось их пройти, чтобы с ним можно было мириться:
- Всего два разрешения: storage и unlimitedStorage. Никаких tabs, cookies, history или webRequest.
- Одно разрешение на хост — api.scroll.dog — используется только для проверки лицензии и никогда для доступа к странице, которую вы открыли.
- Питомец живёт в фиксированной дорожке нулевого размера и всегда пишет только CSS-свойство transform, так что вёрстка вашей страницы никогда не меняется.
- Прокрутка слушается пассивно и сворачивается в одну запись на кадр анимации.
- Один переключатель мгновенно убирает питомца со всех открытых вкладок.
Ничего из этого не хвастовство — это минимум. У вещи, единственная работа которой — приятно выглядеть, нет никакого права что-либо замедлять.
Посмотреть на собаку