Получи случайную криптовалюту за регистрацию!

perfScan - Секреты быстрых сайтов

Логотип телеграм канала @perfscan — perfScan - Секреты быстрых сайтов P
Логотип телеграм канала @perfscan — perfScan - Секреты быстрых сайтов
Адрес канала: @perfscan
Категории: Технологии
Язык: Русский
Количество подписчиков: 1.71K
Описание канала:

Делимся секретами как создавать быстрые сайты и ускорять существующие.
По вопросам сотрудничества: @fenixru
При использовании материалов канала обязательна прямая заметная и без редиректов ссылка на него и указание авторства: Антон Белогородцев.

Рейтинги и Отзывы

4.33

3 отзыва

Оценить канал perfscan и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

2

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения

2022-08-18 16:52:35
В 101 версии Google Chrome появилась новая возможность управлять приоритетами, причем более понятная, чем раньше. Представьте, что у любого загружаемого ресурса: картинки, стилей скриптов, или даже iframe, можно указать приоритет загрузки и тем самым более гибко управлять всем процессом загрузки. Даже в preload можно управлять пориоритетами. Интересно?

Имя этому свойству fetchpriority. Пока поддержка крайне мала, и надеяться только на него нельзя, но это уже большой шаг в сторону нативного управления приоритетами. Для того, чтобы использовать его, просто добавляете у нужного html-элемента fetchpriority="low|high|auto" и загрузка ресурсов будет выстроена исходя из этих приоритетов. Поддерка пока небольшая, ждем обновления браузеров у пользователей.




В этом случае первой будет загружена картинка, которая является LCP-элементом.

Самое главное - не ставить всем ресурсам маскимальный приоритет, это не ускорит загрузку.

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

Лайк, если было полезно.
1.3K viewsedited  13:52
Открыть/Комментировать
2022-08-16 11:51:21
Привет, сегодня покажу пример бесконечной бегущей строки на чистом css без использования JS. Совсем недавно анализировал сайт, где было две бегущих строки в разные стороны с логотипами партнеров и сделана она была на JS при помощи GSAP - это достаточно мощная библиотека, и позволяет делать сложные анимации просто и быстро, но как мы с вами знаем, ничто не сравнится по скорости с нативным функционалом браузера. Поэтому я покажу реализацию этого функционала вообще без использования JS. Но в отличии от сайта, где я увидел логотипы, здесь они будут останавливаются при наведении.

Ссылка на codepen

Пишите, используете ли вы подобные элементы на сайте.

Лайк, если полезно. Огонь если хотите больше постов с примерами кода.
1.2K views08:51
Открыть/Комментировать
2022-08-12 18:03:04
Для того, чтобы сделать пометку в браузере пользователя, например о том, что он согласился с тем, что на сайте используются Cookie часто ставят cookie. Странно, не правда ли? Сегодня расскажу почему это плохо, и чем лучше заменить.

Начнем с того, что каждая кука отправляется на сервер с каждым запросом. В нашем примере пусть это будет "cookies-popup-close=1; " и в каждый запрос на сервер, даже при загрузке картинки будет отправлена эта самая кука. Казалось бы, всего 22 символа, но при 50 запросах на странице это уже 1 килобайт информации, если глубина просмотра сайта в среднем 3 страницы на посетителя и суточной посещаемости в 5000 человек это уже 16 мб ненужной информации которую получил сервер и обработал. А если посещаемость больше? А если кука не одна? Посчитайте сами, сколько лишней информации обрабатывает ваш сервер ежемесячно.

Для очень грубых посчетов можно использовать такую формулу:

document.cookie.length * performance.getEntries().filter(e => e?.name.indexOf('http') === 0 && location.host === new URL(e?.name).host).length

Выполните этот код в консоли браузера на своем сайте прямо сейчас. На сайте одного из клиентов вышло примерно 170 кб cookies на каждую страницу. Это конечно приблизительно, данные сжимаются, и часть этих данных нужна, но 99% случаев это лишняя информация которая передается с каждым запросом.

Раньше выносили статику на отдельный поддомен, куки на него не распространялись и не передавались, но это +1 соединение, а как мы помним соединение самая ресурсоёмкая операция.

Как предлагаю делать я: используйте localStorage для данных, которые устанавливаются и считываются только в JS. Если данные используются на backend, то тогда запрещайте к ним доступ из JS. Еще увеличите безопасность.

localStorage.setItem('cookies-close','1');
localStorage.getItem('cookies-close');

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

А как вы относитесь к Cookies? Используете localStorage?

Лайк, если было полезно
1.5K views15:03
Открыть/Комментировать
2022-08-10 18:42:09
Вчера мы говорили про mobile first верстку, и я рассказывал, что переопределения десктопных стилей мобильными - это плохо для быстродействия. Сегодня я расскажу про переопределение стилей вообще, не только в мобильной версии.

Частая ситуация, когда на проекте подключается стили от bootstrap, затем контент стилизуется и меняется так как задумал дизайнер темы, и после этого еще одни стили перебивают какой-то или дочерней темой или внесением правок в существующую. Итого некоторые элементы могут иметь очень много переопределений.

Совсем недавно я работал с проектом, где стили занимали 4 мб, и при этом неиспользумых почти небыло! У каждого DOM элемента было по несколько десятков переопределений. Представьте объем вычислений для перерисовки, которые выполняет браузер, при добавлении класса к такому элементу.

Чем больше объем стилей и чем больше элементов в DOM, тем дольше происходит первичная отрисовка и каждая перерисовка, которая может инициализироваться при любой манипуляции с DOM. Но при этом переопределение - это не баг а фишка, которая позволяет писать меньше кода.

Лучшим выходом является не использовать готовую сетку, типа бутстрап, если будут переписаны свойства у большинства селекторов. Используйте свою сетку в таком случае. При верстке используйте стандарт БЭМ, благодаря нему можно выполнять минимальное число переопределений. Можно сверстать даже так, чтобы модификаторы не выполняли ни одного переопределения. Вычищайте стили, у элементов, если вы видите слишком много переопределений. Можно даже в тестах написать проверку для таких ситуаций.

Я один раз задался целью сверстать страницу без единого переопределения, это возможно, но при этом появляется дублирование кода, что также не очень хорошо, поэтому во всем нужно искать баланс. Не все переопределения - это зло, но если их у элемента больше 5, то это точно повод переверстать этот участок кода.

А вы проверяете верстку на количество переопредлений - напишите об этом

Ставьте лайк, если после прочтения проверили свой последний проект )
1.2K viewsedited  15:42
Открыть/Комментировать
2022-08-09 19:35:55
Все знают, или по крайней мере слышали, что такое mobile-first верстка, и что нужно начинать верстку именно с мобильной версии. А вот на вопрос "Почему" так ответить могут далеко не все. На самом деле это влияет и на быстродействие сайта, как вы уже догадались, иначе я бы про это не писал )

Давайте разберемся, как браузер обрабатывает CSS-код. Сначала происходит парсинг всех свойств, а потом применяет их по порядку соблюдая приоритеты к элементам DOM. Если мы используем не mobile first верстку, то сначала будут применены стили из десктопа ко всем элементам, и затем эти стили будут переопределены мобильными стилями из media запросов. На десктопе будет меньше действий для стилизации, чем на мобильном устройстве, хотя по скорости эти устройства с точностью наоборот Десктоп почти всегда быстрее мобильного устройства.

В мобильной верстке все наоборот, сначала применяются стили для мобильной версии, а для десктопной версии стили уже не применятся, так как не проходят по условию. Значит меньше перерисовки и меньше затрат времени на это. А значит более быстрое приложение.

Кстати, не все знают, что можно даже не грузить стили для десктопа на мобильной версии, просто указав media запрос в свойстве media у тега



Если укажете такой код, то этот файл стилей не будет загружен, пока media-запрос не станет истинным, тоесть при ширине окна менее 980 пикселей файл не будет загружен.

Современный тренд уже заставляет даже дизайнеров делать mobile first дизайн - так легче верстать и продумывать интерфейс так, чтобы не было ничего лишнего, и интерфейс было легко верстать и пользоваться им.

Я надеюсь, что вы используете только mobile first верстку и не знаете как верстать иначе? - пишите в комменты.

Ставьте лайк, если верстаете, начиная с мобильной версии, посмотрим, сколько нас )
1.3K viewsedited  16:35
Открыть/Комментировать
2022-08-05 15:13:04
Очень часто поступают вопросы про jQuery - можно ли использовать, и как эта библиотека влияет на скорость. Действительно, если вопрос производительности стоит остро, то нужно максимально оптимизировать все, что можно на сайте, в том числе понять, как влияет jQuery, и нужен ли он вообще. Давайте для начала поищем тесты быстродействия jQuery в сравнении с обычным JS.

В 2013 году на хабре вышла статья со сравнением производительности JS-библиотек. По всем результатам jQuery оказался самым медленным. Но это уже старая статья, с того времени вышла куча обновлений. Можно провести тестирование прямо в своем браузере. Переходим по ссылке, нажимаем RUN и ждем результат. Native JS окажется всегда быстрее, и в некоторых случаях разница доходит до 1000 процентов.

Еще одним аргументом в пользу jQuery может стать простота написания кода на нем, но это уже далеко не так. Если не поддерживать старые браузеры, как я советовал ранее, то получится совсем немного больше кода, чем на jQuery, однако если учитывать 89кб - вес самой библиотеки, то разница всегда будет в пользу чистого JS.

Если стоит выбор подключать ли jQuery, чтобы сделать ajax запрос, или выполнить простые операции с DOM, то ответом должен быть НЕТ, так как обычный fetch может заменить его даже с бОльшим комфортом, а операции с DOM c появлением querySelector стали много проще, чем раньше.

А вы используете jQuery в своих проектах?
1.6K views12:13
Открыть/Комментировать
2022-08-04 18:32:09
Сегодня короткий пост, но достаточно важный в теме быстродействия. Если ваш сайт не работает без JS, значит его точно можно сделать быстрее: как минимум улучшить #INP и #TBT. Помните, когда я писал про слайдеры я советовал проверять работу сайта без JS. Так вот, это касается всего сайта.

Частая ошибка - это переназначение стандартных элементов. Когда кнопка выполняет функции ссылки, а ссылка кнопки, или обычный div работает как кнопка, или ссылка. JavaScript позволяет это делать с любым элементом: отменить стандартное поведение при помощи preventDefault, и назначить свое. Не все понимают, в чем проблема, пока не отключат JavaScript и не попробуют выполнить какое-то действие на сайте.

Я не призываю отказываться от JavaScript на сайте, просто не нужно менять поведение стандартных элементов, если у них есть аналоги. Если хотите перейти на другую страницу, не нужно писать свою реализацию перехода по ссылка на javascript, хотя это и выглядит элементарно. Если нужна ссылка - используйте ссылку. Если нужно отправить данные при клике на кнопку - не нужно писать огромный обработчик, это можно сделать на обычной форме с минимальным написанием кода на JS. Если проектируете свои компоненты, поддержки которых в браузере нет, то сделайте это на наиболее подходящих элементах.

Я знаю, есть примеры, когда без переопределения не обойтись, можете написать о таких в комментарии. Но в большинстве случаев, стоит использовать элементы по прямому назначению.
1.4K views15:32
Открыть/Комментировать
2022-08-03 17:07:13
Как думаете, какой пейджспид будет у сайта, если его показатель #ttfb равен 5 секунд? Сегодня мы постараемся ответить и экспериментально подтвердить, какое влияние на общий PageSpeed Score оказывает время ответа сервера.

Для начала есть сайт fe-nix.ru который имеет зеленую зону в PageSpeed. Это статика, сделанная 10 лет назад, поэтому с ответом сервера все в порядке. Вот замеры этой страницы. Теперь сделаем полную копию этой страницы, но отроем его через php, с задержкой в 5 секунд. По адресу fe-nix.ru/delay/5/ находится версия этого сайта с задержкой ответа сервера. Вот замеры этой страницы. Как видите, разница небольшая, и отличаются два замера только значением показателя #SpeedIndex, который отличается примерно на время задержки в ответе сервера + погрешность замера.

Теперь переходим в калькулятор значения PageSpeed, и смотрим какое влияние оказывает показатель Speed Index на общую оценку - видим всего лишь 10%. Значит если у нас будет максимальный ответ сервера, мы потеряем всего 10 баллов, но пользоваться сайтом при этом будет почти невозможно. Попробуйте походить по ссылкам.

Специалисты, которые занимаются ускорением сайтов, на ttfb обращают очень мало внимания, из-за небольшого веса этого показателя в оценке PageSpeed. Попробуйте походить по медленному сайту, и скажите, комфортно ли вам пользоваться таким сайтов? Мне - нет, поэтому над ttfb нужно также работать, как и над фронтендом.

А вы обращаете внимание на показатель ttfb? Дайте огня, если считаете, что ttfb важен.
1.3K views14:07
Открыть/Комментировать
2022-08-02 13:46:45
Немного философии. Знаете ли вы, что весь интернет в среднем ускорится, если со всех сайтов убрать поддержку старых браузеров?

Если отказаться от такой поддежки, то объемы кода сократятся, стандарты начнут развиваться быстрее, вся сфера станет лучше. Даже сборку c ES6 на ES5 можно не делать, так как современные браузеры вполне это поддерживают. Очевидно, что поддерживать браузеры в рамках 2-3 лет нужно, но не более. До сих пор люди заботятся о поддержке интернет эксплорера, хотя даже сам Miсrosoft открестился от него.

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

Кроме всего вышеперечисленного, поддержка старых браузеров тормозит переход пользователей на современные версии браузеров, и как следствие хуже весь фронтенд, нет стимула отказываться от поддержки IE11, значит есть посетители с него, которых нужно поддерживать, что отнимает время силы, и деньги у бизнеса.

Если вас просят поддерживать сильно старые браузеры, лучше убедить клиента не делать этого, указав на стоимость, и возможности современных браузеров. Максимум можно поставить заглушку со ссылкой на современные версии браузеров. Заказчик может часто ссылаться на то, что в статистике много пользователей с IE11, но чаще всего это оказываются просто боты, которые так представляются.

Напишите свои истории про поддержку старых браузеров, и накидайте реакций, если согласны с тезисом поста.
1.3K views10:46
Открыть/Комментировать
2022-08-01 11:59:29
Все, кто столкнулся с проблемой производительности и начал ее изучать рано или поздно сталкивается с тем, что число прослушивателей событий влияет на быстродействие всего приложения, особенно это касается scroll. Браузер и так его оптимизирует, не отрисовывая контент за пределами экрана, поэтому дополнительные операции и вычисления на это событие очень заметны на медленных устройствах. Все наверное сталкивались, когда скроллишь контент, а там белый экран и спустя время, которое может доходить до 3-5 секунд контент отрисовывается.

В контентных проектах последнее время очень распространен индикатор скролла, чтобы пользователь визуально мог видеть сколько прочитано и сколько осталось прочитать, чтобы оценить свое время. Очень удобно. Но для того, чтобы сделать такой индикатор обычно используют javascript и каждое событие scroll производятся вычисления положения и некоторые математические операции.

Сегодня я предлагаю #nojs способ для реализации подобного функционала. Способ придумал не я, а нашел у пользователя chokcoco. Я адаптировал, протестировал быстродействие и могу 100% рекомендовать данное решение для приложений, так как все вычисления делает браузер, перерисовки не происходит, все работает на нативном свойстве background.

Ссылка на Codepen

Пишите свое мнение по поводу этого решения. И накидайте реакций для поднятия настроения
1.4K views08:59
Открыть/Комментировать