❗️ Все, кто столкнулся с проблемой производительности и начал ее изучать рано или поздно сталкивается с тем, что число прослушивателей событий влияет на быстродействие всего приложения, особенно это касается scroll. Браузер и так его оптимизирует, не отрисовывая контент за пределами экрана, поэтому дополнительные операции и вычисления на это событие очень заметны на медленных устройствах. Все наверное сталкивались, когда скроллишь контент, а там белый экран и спустя время, которое может доходить до 3-5 секунд контент отрисовывается.
В контентных проектах последнее время очень распространен индикатор скролла, чтобы пользователь визуально мог видеть сколько прочитано и сколько осталось прочитать, чтобы оценить свое время. Очень удобно. Но для того, чтобы сделать такой индикатор обычно используют javascript и каждое событие scroll производятся вычисления положения и некоторые математические операции.
Сегодня я предлагаю #nojs способ для реализации подобного функционала. Способ придумал не я, а нашел у пользователя chokcoco. Я адаптировал, протестировал быстродействие и могу 100% рекомендовать данное решение для приложений, так как все вычисления делает браузер, перерисовки не происходит, все работает на нативном свойстве background.
✅ Ссылка на Codepen
💬 Пишите свое мнение по поводу этого решения. И накидайте реакций для поднятия настроения ☺️
В контентных проектах последнее время очень распространен индикатор скролла, чтобы пользователь визуально мог видеть сколько прочитано и сколько осталось прочитать, чтобы оценить свое время. Очень удобно. Но для того, чтобы сделать такой индикатор обычно используют javascript и каждое событие scroll производятся вычисления положения и некоторые математические операции.
Сегодня я предлагаю #nojs способ для реализации подобного функционала. Способ придумал не я, а нашел у пользователя chokcoco. Я адаптировал, протестировал быстродействие и могу 100% рекомендовать данное решение для приложений, так как все вычисления делает браузер, перерисовки не происходит, все работает на нативном свойстве background.
✅ Ссылка на Codepen
💬 Пишите свое мнение по поводу этого решения. И накидайте реакций для поднятия настроения ☺️
🔥28👍11👏2❤🔥1🤯1🤩1
❗️ Немного философии. Знаете ли вы, что весь интернет в среднем ускорится, если со всех сайтов убрать поддержку старых браузеров?
Если отказаться от такой поддежки, то объемы кода сократятся, стандарты начнут развиваться быстрее, вся сфера станет лучше. Даже сборку c ES6 на ES5 можно не делать, так как современные браузеры вполне это поддерживают. Очевидно, что поддерживать браузеры в рамках 2-3 лет нужно, но не более. До сих пор люди заботятся о поддержке интернет эксплорера, хотя даже сам Miсrosoft открестился от него.
Отправка устаревшего кода в браузер означает, что эффективную операцию, которую может выполнить современный браузер, и под выполнение которой он оптимизирован на уровне ядра, переписывают старым кодом, что чаще всего увеличивает сложность алгоритмов. Кроме того, что кода становится гораздо больше, он становится менее эффективным, не всегда, но чаще всего это именно так.
Кроме всего вышеперечисленного, поддержка старых браузеров тормозит переход пользователей на современные версии браузеров, и как следствие хуже весь фронтенд, нет стимула отказываться от поддержки IE11, значит есть посетители с него, которых нужно поддерживать, что отнимает время силы, и деньги у бизнеса.
⚠️ Если вас просят поддерживать сильно старые браузеры, лучше убедить клиента не делать этого, указав на стоимость, и возможности современных браузеров. Максимум можно поставить заглушку со ссылкой на современные версии браузеров. Заказчик может часто ссылаться на то, что в статистике много пользователей с IE11, но чаще всего это оказываются просто боты, которые так представляются.
💬 Напишите свои истории про поддержку старых браузеров, и накидайте реакций, если согласны с тезисом поста.
Если отказаться от такой поддежки, то объемы кода сократятся, стандарты начнут развиваться быстрее, вся сфера станет лучше. Даже сборку c ES6 на ES5 можно не делать, так как современные браузеры вполне это поддерживают. Очевидно, что поддерживать браузеры в рамках 2-3 лет нужно, но не более. До сих пор люди заботятся о поддержке интернет эксплорера, хотя даже сам Miсrosoft открестился от него.
Отправка устаревшего кода в браузер означает, что эффективную операцию, которую может выполнить современный браузер, и под выполнение которой он оптимизирован на уровне ядра, переписывают старым кодом, что чаще всего увеличивает сложность алгоритмов. Кроме того, что кода становится гораздо больше, он становится менее эффективным, не всегда, но чаще всего это именно так.
Кроме всего вышеперечисленного, поддержка старых браузеров тормозит переход пользователей на современные версии браузеров, и как следствие хуже весь фронтенд, нет стимула отказываться от поддержки IE11, значит есть посетители с него, которых нужно поддерживать, что отнимает время силы, и деньги у бизнеса.
⚠️ Если вас просят поддерживать сильно старые браузеры, лучше убедить клиента не делать этого, указав на стоимость, и возможности современных браузеров. Максимум можно поставить заглушку со ссылкой на современные версии браузеров. Заказчик может часто ссылаться на то, что в статистике много пользователей с IE11, но чаще всего это оказываются просто боты, которые так представляются.
💬 Напишите свои истории про поддержку старых браузеров, и накидайте реакций, если согласны с тезисом поста.
👍27🔥8👏2❤1
❗️ Как думаете, какой пейджспид будет у сайта, если его показатель #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 важен.
Для начала есть сайт fe-nix.ru который имеет зеленую зону в PageSpeed. Это статика, сделанная 10 лет назад, поэтому с ответом сервера все в порядке. Вот замеры этой страницы. Теперь сделаем полную копию этой страницы, но отроем его через php, с задержкой в 5 секунд. По адресу fe-nix.ru/delay/5/ находится версия этого сайта с задержкой ответа сервера. Вот замеры этой страницы. Как видите, разница небольшая, и отличаются два замера только значением показателя #SpeedIndex, который отличается примерно на время задержки в ответе сервера + погрешность замера.
Теперь переходим в калькулятор значения PageSpeed, и смотрим какое влияние оказывает показатель Speed Index на общую оценку - видим всего лишь 10%. Значит если у нас будет максимальный ответ сервера, мы потеряем всего 10 баллов, но пользоваться сайтом при этом будет почти невозможно. Попробуйте походить по ссылкам.
Специалисты, которые занимаются ускорением сайтов, на ttfb обращают очень мало внимания, из-за небольшого веса этого показателя в оценке PageSpeed. Попробуйте походить по медленному сайту, и скажите, комфортно ли вам пользоваться таким сайтов? Мне - нет, поэтому над ttfb нужно также работать, как и над фронтендом.
💬 А вы обращаете внимание на показатель ttfb? Дайте огня, если считаете, что ttfb важен.
🔥24👍12👏3
❗️ Сегодня короткий пост, но достаточно важный в теме быстродействия. Если ваш сайт не работает без JS, значит его точно можно сделать быстрее: как минимум улучшить #INP и #TBT. Помните, когда я писал про слайдеры я советовал проверять работу сайта без JS. Так вот, это касается всего сайта.
Частая ошибка - это переназначение стандартных элементов. Когда кнопка выполняет функции ссылки, а ссылка кнопки, или обычный div работает как кнопка, или ссылка. JavaScript позволяет это делать с любым элементом: отменить стандартное поведение при помощи preventDefault, и назначить свое. Не все понимают, в чем проблема, пока не отключат JavaScript и не попробуют выполнить какое-то действие на сайте.
⚠️ Я не призываю отказываться от JavaScript на сайте, просто не нужно менять поведение стандартных элементов, если у них есть аналоги. Если хотите перейти на другую страницу, не нужно писать свою реализацию перехода по ссылка на javascript, хотя это и выглядит элементарно. Если нужна ссылка - используйте ссылку. Если нужно отправить данные при клике на кнопку - не нужно писать огромный обработчик, это можно сделать на обычной форме с минимальным написанием кода на JS. Если проектируете свои компоненты, поддержки которых в браузере нет, то сделайте это на наиболее подходящих элементах.
💬 Я знаю, есть примеры, когда без переопределения не обойтись, можете написать о таких в комментарии. Но в большинстве случаев, стоит использовать элементы по прямому назначению.
Частая ошибка - это переназначение стандартных элементов. Когда кнопка выполняет функции ссылки, а ссылка кнопки, или обычный div работает как кнопка, или ссылка. JavaScript позволяет это делать с любым элементом: отменить стандартное поведение при помощи preventDefault, и назначить свое. Не все понимают, в чем проблема, пока не отключат JavaScript и не попробуют выполнить какое-то действие на сайте.
⚠️ Я не призываю отказываться от JavaScript на сайте, просто не нужно менять поведение стандартных элементов, если у них есть аналоги. Если хотите перейти на другую страницу, не нужно писать свою реализацию перехода по ссылка на javascript, хотя это и выглядит элементарно. Если нужна ссылка - используйте ссылку. Если нужно отправить данные при клике на кнопку - не нужно писать огромный обработчик, это можно сделать на обычной форме с минимальным написанием кода на JS. Если проектируете свои компоненты, поддержки которых в браузере нет, то сделайте это на наиболее подходящих элементах.
💬 Я знаю, есть примеры, когда без переопределения не обойтись, можете написать о таких в комментарии. Но в большинстве случаев, стоит использовать элементы по прямому назначению.
👍20🔥8👏2
❗️ Очень часто поступают вопросы про jQuery - можно ли использовать, и как эта библиотека влияет на скорость. Действительно, если вопрос производительности стоит остро, то нужно максимально оптимизировать все, что можно на сайте, в том числе понять, как влияет jQuery, и нужен ли он вообще. Давайте для начала поищем тесты быстродействия jQuery в сравнении с обычным JS.
В 2013 году на хабре вышла статья со сравнением производительности JS-библиотек. По всем результатам jQuery оказался самым медленным. Но это уже старая статья, с того времени вышла куча обновлений. Можно провести тестирование прямо в своем браузере. Переходим по ссылке, нажимаем RUN и ждем результат. Native JS окажется всегда быстрее, и в некоторых случаях разница доходит до 1000 процентов.
Еще одним аргументом в пользу jQuery может стать простота написания кода на нем, но это уже далеко не так. Если не поддерживать старые браузеры, как я советовал ранее, то получится совсем немного больше кода, чем на jQuery, однако если учитывать 89кб - вес самой библиотеки, то разница всегда будет в пользу чистого JS.
⚠️ Если стоит выбор подключать ли jQuery, чтобы сделать ajax запрос, или выполнить простые операции с DOM, то ответом должен быть НЕТ, так как обычный fetch может заменить его даже с бОльшим комфортом, а операции с DOM c появлением querySelector стали много проще, чем раньше.
💬 А вы используете jQuery в своих проектах?
В 2013 году на хабре вышла статья со сравнением производительности JS-библиотек. По всем результатам jQuery оказался самым медленным. Но это уже старая статья, с того времени вышла куча обновлений. Можно провести тестирование прямо в своем браузере. Переходим по ссылке, нажимаем RUN и ждем результат. Native JS окажется всегда быстрее, и в некоторых случаях разница доходит до 1000 процентов.
Еще одним аргументом в пользу jQuery может стать простота написания кода на нем, но это уже далеко не так. Если не поддерживать старые браузеры, как я советовал ранее, то получится совсем немного больше кода, чем на jQuery, однако если учитывать 89кб - вес самой библиотеки, то разница всегда будет в пользу чистого JS.
⚠️ Если стоит выбор подключать ли jQuery, чтобы сделать ajax запрос, или выполнить простые операции с DOM, то ответом должен быть НЕТ, так как обычный fetch может заменить его даже с бОльшим комфортом, а операции с DOM c появлением querySelector стали много проще, чем раньше.
💬 А вы используете jQuery в своих проектах?
👍20🔥6👏2😢1
❗️ Все знают, или по крайней мере слышали, что такое mobile-first верстка, и что нужно начинать верстку именно с мобильной версии. А вот на вопрос "Почему" так ответить могут далеко не все. На самом деле это влияет и на быстродействие сайта, как вы уже догадались, иначе я бы про это не писал )
Давайте разберемся, как браузер обрабатывает CSS-код. Сначала происходит парсинг всех свойств, а потом применяет их по порядку соблюдая приоритеты к элементам DOM. Если мы используем не mobile first верстку, то сначала будут применены стили из десктопа ко всем элементам, и затем эти стили будут переопределены мобильными стилями из media запросов. На десктопе будет меньше действий для стилизации, чем на мобильном устройстве, хотя по скорости эти устройства с точностью наоборот Десктоп почти всегда быстрее мобильного устройства.
В мобильной верстке все наоборот, сначала применяются стили для мобильной версии, а для десктопной версии стили уже не применятся, так как не проходят по условию. Значит меньше перерисовки и меньше затрат времени на это. А значит более быстрое приложение.
Кстати, не все знают, что можно даже не грузить стили для десктопа на мобильной версии, просто указав media запрос в свойстве media у тега <link>
Если укажете такой код, то этот файл стилей не будет загружен, пока media-запрос не станет истинным, тоесть при ширине окна менее 980 пикселей файл не будет загружен.
⚠️ Современный тренд уже заставляет даже дизайнеров делать mobile first дизайн - так легче верстать и продумывать интерфейс так, чтобы не было ничего лишнего, и интерфейс было легко верстать и пользоваться им.
💬 Я надеюсь, что вы используете только mobile first верстку и не знаете как верстать иначе? - пишите в комменты.
👍 Ставьте лайк, если верстаете, начиная с мобильной версии, посмотрим, сколько нас )
Давайте разберемся, как браузер обрабатывает CSS-код. Сначала происходит парсинг всех свойств, а потом применяет их по порядку соблюдая приоритеты к элементам DOM. Если мы используем не mobile first верстку, то сначала будут применены стили из десктопа ко всем элементам, и затем эти стили будут переопределены мобильными стилями из media запросов. На десктопе будет меньше действий для стилизации, чем на мобильном устройстве, хотя по скорости эти устройства с точностью наоборот Десктоп почти всегда быстрее мобильного устройства.
В мобильной верстке все наоборот, сначала применяются стили для мобильной версии, а для десктопной версии стили уже не применятся, так как не проходят по условию. Значит меньше перерисовки и меньше затрат времени на это. А значит более быстрое приложение.
Кстати, не все знают, что можно даже не грузить стили для десктопа на мобильной версии, просто указав media запрос в свойстве media у тега <link>
<link rel="stylesheet" href="desktop.css" media="screen and (min-width: 980px)">Если укажете такой код, то этот файл стилей не будет загружен, пока media-запрос не станет истинным, тоесть при ширине окна менее 980 пикселей файл не будет загружен.
⚠️ Современный тренд уже заставляет даже дизайнеров делать mobile first дизайн - так легче верстать и продумывать интерфейс так, чтобы не было ничего лишнего, и интерфейс было легко верстать и пользоваться им.
💬 Я надеюсь, что вы используете только mobile first верстку и не знаете как верстать иначе? - пишите в комменты.
👍 Ставьте лайк, если верстаете, начиная с мобильной версии, посмотрим, сколько нас )
👍30🤔16🔥11👏2
❗️ Вчера мы говорили про mobile first верстку, и я рассказывал, что переопределения десктопных стилей мобильными - это плохо для быстродействия. Сегодня я расскажу про переопределение стилей вообще, не только в мобильной версии.
Частая ситуация, когда на проекте подключается стили от bootstrap, затем контент стилизуется и меняется так как задумал дизайнер темы, и после этого еще одни стили перебивают какой-то или дочерней темой или внесением правок в существующую. Итого некоторые элементы могут иметь очень много переопределений.
Совсем недавно я работал с проектом, где стили занимали 4 мб, и при этом неиспользумых почти небыло! У каждого DOM элемента было по несколько десятков переопределений. Представьте объем вычислений для перерисовки, которые выполняет браузер, при добавлении класса к такому элементу.
Чем больше объем стилей и чем больше элементов в DOM, тем дольше происходит первичная отрисовка и каждая перерисовка, которая может инициализироваться при любой манипуляции с DOM. Но при этом переопределение - это не баг а фишка, которая позволяет писать меньше кода.
⚠️ Лучшим выходом является не использовать готовую сетку, типа бутстрап, если будут переписаны свойства у большинства селекторов. Используйте свою сетку в таком случае. При верстке используйте стандарт БЭМ, благодаря нему можно выполнять минимальное число переопределений. Можно сверстать даже так, чтобы модификаторы не выполняли ни одного переопределения. Вычищайте стили, у элементов, если вы видите слишком много переопределений. Можно даже в тестах написать проверку для таких ситуаций.
Я один раз задался целью сверстать страницу без единого переопределения, это возможно, но при этом появляется дублирование кода, что также не очень хорошо, поэтому во всем нужно искать баланс. Не все переопределения - это зло, но если их у элемента больше 5, то это точно повод переверстать этот участок кода.
💬 А вы проверяете верстку на количество переопредлений - напишите об этом
👍 Ставьте лайк, если после прочтения проверили свой последний проект )
Частая ситуация, когда на проекте подключается стили от bootstrap, затем контент стилизуется и меняется так как задумал дизайнер темы, и после этого еще одни стили перебивают какой-то или дочерней темой или внесением правок в существующую. Итого некоторые элементы могут иметь очень много переопределений.
Совсем недавно я работал с проектом, где стили занимали 4 мб, и при этом неиспользумых почти небыло! У каждого DOM элемента было по несколько десятков переопределений. Представьте объем вычислений для перерисовки, которые выполняет браузер, при добавлении класса к такому элементу.
Чем больше объем стилей и чем больше элементов в DOM, тем дольше происходит первичная отрисовка и каждая перерисовка, которая может инициализироваться при любой манипуляции с DOM. Но при этом переопределение - это не баг а фишка, которая позволяет писать меньше кода.
⚠️ Лучшим выходом является не использовать готовую сетку, типа бутстрап, если будут переписаны свойства у большинства селекторов. Используйте свою сетку в таком случае. При верстке используйте стандарт БЭМ, благодаря нему можно выполнять минимальное число переопределений. Можно сверстать даже так, чтобы модификаторы не выполняли ни одного переопределения. Вычищайте стили, у элементов, если вы видите слишком много переопределений. Можно даже в тестах написать проверку для таких ситуаций.
Я один раз задался целью сверстать страницу без единого переопределения, это возможно, но при этом появляется дублирование кода, что также не очень хорошо, поэтому во всем нужно искать баланс. Не все переопределения - это зло, но если их у элемента больше 5, то это точно повод переверстать этот участок кода.
💬 А вы проверяете верстку на количество переопредлений - напишите об этом
👍 Ставьте лайк, если после прочтения проверили свой последний проект )
👍15🔥8👏5
❗️ Для того, чтобы сделать пометку в браузере пользователя, например о том, что он согласился с тем, что на сайте используются Cookie часто ставят cookie. Странно, не правда ли? Сегодня расскажу почему это плохо, и чем лучше заменить.
Начнем с того, что каждая кука отправляется на сервер с каждым запросом. В нашем примере пусть это будет "cookies-popup-close=1; " и в каждый запрос на сервер, даже при загрузке картинки будет отправлена эта самая кука. Казалось бы, всего 22 символа, но при 50 запросах на странице это уже 1 килобайт информации, если глубина просмотра сайта в среднем 3 страницы на посетителя и суточной посещаемости в 5000 человек это уже 16 мб ненужной информации которую получил сервер и обработал. А если посещаемость больше? А если кука не одна? Посчитайте сами, сколько лишней информации обрабатывает ваш сервер ежемесячно.
Для очень грубых посчетов можно использовать такую формулу:
Выполните этот код в консоли браузера на своем сайте прямо сейчас. На сайте одного из клиентов вышло примерно 170 кб cookies на каждую страницу. Это конечно приблизительно, данные сжимаются, и часть этих данных нужна, но 99% случаев это лишняя информация которая передается с каждым запросом.
Раньше выносили статику на отдельный поддомен, куки на него не распространялись и не передавались, но это +1 соединение, а как мы помним соединение самая ресурсоёмкая операция.
⚠️ Как предлагаю делать я: используйте localStorage для данных, которые устанавливаются и считываются только в JS. Если данные используются на backend, то тогда запрещайте к ним доступ из JS. Еще увеличите безопасность.
Данные не уходят, и не мешают загрузке, и из js их можно получить одной командой без плясок с бубном в виде парсера.
💬 А как вы относитесь к Cookies? Используете localStorage?
👍 Лайк, если было полезно
Начнем с того, что каждая кука отправляется на сервер с каждым запросом. В нашем примере пусть это будет "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?
👍 Лайк, если было полезно
👍47🔥7👏3
Привет, сегодня покажу пример бесконечной бегущей строки на чистом css без использования JS. Совсем недавно анализировал сайт, где было две бегущих строки в разные стороны с логотипами партнеров и сделана она была на JS при помощи GSAP - это достаточно мощная библиотека, и позволяет делать сложные анимации просто и быстро, но как мы с вами знаем, ничто не сравнится по скорости с нативным функционалом браузера. Поэтому я покажу реализацию этого функционала вообще без использования JS. Но в отличии от сайта, где я увидел логотипы, здесь они будут останавливаются при наведении.
✅ Ссылка на codepen
💬 Пишите, используете ли вы подобные элементы на сайте.
👍 Лайк, если полезно. 🔥 Огонь если хотите больше постов с примерами кода.
✅ Ссылка на codepen
💬 Пишите, используете ли вы подобные элементы на сайте.
👍 Лайк, если полезно. 🔥 Огонь если хотите больше постов с примерами кода.
🔥57👍18👏2🤯1
❗️ В 101 версии Google Chrome появилась новая возможность управлять приоритетами, причем более понятная, чем раньше. Представьте, что у любого загружаемого ресурса: картинки, стилей скриптов, или даже iframe, можно указать приоритет загрузки и тем самым более гибко управлять всем процессом загрузки. Даже в preload можно управлять пориоритетами. Интересно?
Имя этому свойству fetchpriority. Пока поддержка крайне мала, и надеяться только на него нельзя, но это уже большой шаг в сторону нативного управления приоритетами. Для того, чтобы использовать его, просто добавляете у нужного html-элемента fetchpriority="low|high|auto" и загрузка ресурсов будет выстроена исходя из этих приоритетов. Поддерка пока небольшая, ждем обновления браузеров у пользователей.
В этом случае первой будет загружена картинка, которая является LCP-элементом.
⚠️ Самое главное - не ставить всем ресурсам маскимальный приоритет, это не ускорит загрузку.
💬 Пишите в комменты, слышали вы про этот способ управления приоритетом раньше, и будете ли использовать его в своем проекте?
👍 Лайк, если было полезно.
Имя этому свойству fetchpriority. Пока поддержка крайне мала, и надеяться только на него нельзя, но это уже большой шаг в сторону нативного управления приоритетами. Для того, чтобы использовать его, просто добавляете у нужного html-элемента fetchpriority="low|high|auto" и загрузка ресурсов будет выстроена исходя из этих приоритетов. Поддерка пока небольшая, ждем обновления браузеров у пользователей.
<img src="photo.avif" fetchpriority="low" alt="не очень важная картинка">
<img src="lcp-element.avif" fetchpriority="high" alt="картинка, которая является LCP-элементом">В этом случае первой будет загружена картинка, которая является LCP-элементом.
⚠️ Самое главное - не ставить всем ресурсам маскимальный приоритет, это не ускорит загрузку.
💬 Пишите в комменты, слышали вы про этот способ управления приоритетом раньше, и будете ли использовать его в своем проекте?
👍 Лайк, если было полезно.
👍50🔥5👏2
👋 Всем привет!
Телеграм бот прислал статистику канала, и мне стало так стыдно, что ничего не писал последние месяцы. Спасибо, что верили в меня и канал, спасибо что не отписались. Вы крутые, а я не могу выкроить полчаса на пост. Но это все конечно опрадания. Скорее это какой-то страх исписаться. И привет, моему синдрому самозванца.
🙈 Минус 500 человек, но огромное спасибо всем, кто остался. Обещаю уже в январе выпустить два бомбезных поста.
🎄 Ну и по традиции: год был сложный, будет еще сложнее, не разбегайтесь далеко.
🎉 С Наступающим 2023 годом! Берегите себя!
Телеграм бот прислал статистику канала, и мне стало так стыдно, что ничего не писал последние месяцы. Спасибо, что верили в меня и канал, спасибо что не отписались. Вы крутые, а я не могу выкроить полчаса на пост. Но это все конечно опрадания. Скорее это какой-то страх исписаться. И привет, моему синдрому самозванца.
🙈 Минус 500 человек, но огромное спасибо всем, кто остался. Обещаю уже в январе выпустить два бомбезных поста.
🎄 Ну и по традиции: год был сложный, будет еще сложнее, не разбегайтесь далеко.
🎉 С Наступающим 2023 годом! Берегите себя!
👍46🔥16🎉7🕊4👏1🤩1
Такой сервис можно дать контент-менеджеру, который занимается наполнением сайта, чтобы вместо вставки кода с ютуба он прогонял его через этот сервис. Несколько модернизаций со времени предыдущего поста:
1. Превью в формате webp. Оказывается YouTube это умеет уже долгие годы, но для меня это было открытием. 😳
2. Для изображения добавил decoding="async" и loading="lazy". Это нативная возможность браузера по загрузке изображений - асинхронное декодирование и отложенная загрузка.
3. Указал формат 16/9 для превью, что является стандартом для YouTube.
4. Отложил при помощи loading="lazy" инициализацию содержимого самого iframe
5. Добавил логотип YouTube, как кнопку плей, чтобы было больше похоже на оригинальную заглушку.
Этот сервис полностью бесплатный, вы можете сохранить страницу себе и доработать так, как считаете нужным, и затем развернуть где-то внутри вашей организации, для удобной работы. На странице нет никаких кодов отслеживания и прочего мусора. Написано только на JavaScript/CSS/HTML без использования сборщиков, чтобы код работал, не обфусцировался. Весь функционал внутри одной HTML-страницы. Если хотите можете переписать и поделиться более интересной версией.
✅ Ссылка на сервис
🔥 Дайте огня, если хотите больше подобных микро-сервисов.
💬 Пишите в комментарии, если есть идеи или пожелания для будущих постов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥81👍10👏3🎉2🤩1
⚡️ Сегодня ночью Lighthouse был обновлен до 10 версии.
‼️ Важные изменения:
1. Time To Interactive (TTI) больше не учитывается при общей оценке производительности. В восьмой версии его влияние уже было снижено до 10%, а теперь он и вовсе не участвует в формировании оценки. Показатель все равно рассчитывается и можно его получить в json отчете.
2. Влияние Cumulative Layout Shift (CLS) усилено c 15% до 25%. Именно он получил те самые 10% от TTI.
3. Добавлен новый аудит bfcache, это проверка как браузер обрабатывает навигацию вперед/назад, такие страницы должны быть показаны моментально. Но этот аудит не будет отображаться в Google PageSpeed Insights. Доступ к нему можно получить через JSON.
Также был переработан механизм сборки, изменены названия аудитов в JSON, некоторые аудиты вообще удалены. Подробнее можно ознакомиться на Github проекта и в нашем любимом калькуляторе общей оценки.
⚠️ Из идентификации User-Agent убрали "
💬 Давайте обсудим в комментариях.
Что вы думаете о текущих изменениях?
Обращали ли вы последнее время внимание на TTI?
Не считаете ли завышенным влияние CLS?
🔥 Дайте огня за оперативность.
‼️ Важные изменения:
1. Time To Interactive (TTI) больше не учитывается при общей оценке производительности. В восьмой версии его влияние уже было снижено до 10%, а теперь он и вовсе не участвует в формировании оценки. Показатель все равно рассчитывается и можно его получить в json отчете.
2. Влияние Cumulative Layout Shift (CLS) усилено c 15% до 25%. Именно он получил те самые 10% от TTI.
3. Добавлен новый аудит bfcache, это проверка как браузер обрабатывает навигацию вперед/назад, такие страницы должны быть показаны моментально. Но этот аудит не будет отображаться в Google PageSpeed Insights. Доступ к нему можно получить через JSON.
Также был переработан механизм сборки, изменены названия аудитов в JSON, некоторые аудиты вообще удалены. Подробнее можно ознакомиться на Github проекта и в нашем любимом калькуляторе общей оценки.
⚠️ Из идентификации User-Agent убрали "
Chrome-Lighthouse", теперь не получится по этому параметру скрывать часть контента или отдавать облегченную версию.💬 Давайте обсудим в комментариях.
Что вы думаете о текущих изменениях?
Обращали ли вы последнее время внимание на TTI?
Не считаете ли завышенным влияние CLS?
🔥 Дайте огня за оперативность.
🔥33👍4⚡2🤯2😱1
⚡️ Хорошая новость для всех, кто заботится о скорости работы своего сайта, и для всех, кто не может отказаться от счетчика Яндекс-Метрики, но проблемы с производительностью возникают именно в нем. Код подключаемого бандла теперь opensource.
Что это значит? По ссылке доступен исходных код и правила для сборки кода бандла Яндекс-Метрики. Даже просто отключив поддержку очень старых браузеров и разместив его у себя, мы получим улучшение быстродействия. Дерзайте, я тоже проведу эксперименты со своей стороны.
Подробнее в статье на хабре, там описано как работает код, что можно менять, и как отключить ненужные функции.
⚠️ Обратите внимание, запросы отправляются к яндексу, поэтому еще одно соединение никуда не денется. Чтобы от него избавиться на клиенте, рекомендую использовать проксирование, о котором я писал ранее.
💬 Что думаете по этому поводу? Будете ли использовать собсвтенную сборку или останетесь на стандартном бандле, подключаемом с серверов Яндекса?
👍 Палец вверх, если вы уже подключаете свою версию метрики в основной бандл.
Что это значит? По ссылке доступен исходных код и правила для сборки кода бандла Яндекс-Метрики. Даже просто отключив поддержку очень старых браузеров и разместив его у себя, мы получим улучшение быстродействия. Дерзайте, я тоже проведу эксперименты со своей стороны.
Подробнее в статье на хабре, там описано как работает код, что можно менять, и как отключить ненужные функции.
⚠️ Обратите внимание, запросы отправляются к яндексу, поэтому еще одно соединение никуда не денется. Чтобы от него избавиться на клиенте, рекомендую использовать проксирование, о котором я писал ранее.
💬 Что думаете по этому поводу? Будете ли использовать собсвтенную сборку или останетесь на стандартном бандле, подключаемом с серверов Яндекса?
👍 Палец вверх, если вы уже подключаете свою версию метрики в основной бандл.
🔥18🤯5❤3👍3🎉3🤩1
👋 Многие из вас просили меня сделать слайдер, который не будет менять DOM и вызывать перерисовку при инициализации. Я и сам давно обещал вам такой слайдер, очень давно, даже стыдно, но все никак не мог добраться до него. Поэтому я решил попросить помощи у (внезапно) Bing, который работает на GPT-4, и… получилось нечто невероятное!
Благодаря множеству уточнений и итераций, Bing написал за меня почти весь код, который работает как мне хотелось и выглядит вполне прилично. Это не готовая библиотека, конечно, но для одного слайдера на странице вполне подходит, и его можно адаптировать под свои нужды. Я намеренно не стал приводить стилистику кода к единому формату, чтобы можно было видеть еще и результат работы нейросети.
Я лишь немного подправил оформление точек под слайдером, общий layout, прописал url для картинок и добавил заголовок и футер. Все остальное - заслуга нейросети. Я уже пробовал ранее использовать Bing и ChatGPT для написания кода, но такого успеха еще не было. Я потратил 10 минут, писал только запросы с телефона, при этом сам не писал код, а говорил что и как улучшить. Почти как в повседневной жизни, где я консультирую команды и даю рекомендации по улучшению быстродействия сайтов.
В итоге мы имеем слайдер, который полностью соответствует моим требованиям, не меняет DOM и не вызывает перерисовку при инициализации, и даже частично работает без JS. Это ли не чудо? )
✅ Ссылка на код слайдера.
Если кто-то захочет - можете улучшить его и упаковать в универсальную библиотеку, если пришлете ее мне - я с радостью расскажу о ней.
🔥 Зажгите огонь для Bing, или 👍 палец вверх за мои запросы и уточнения )
💬 Напишите в комментариях, что вы думаете об этом слайдере и о Bing конечно же.
Благодаря множеству уточнений и итераций, Bing написал за меня почти весь код, который работает как мне хотелось и выглядит вполне прилично. Это не готовая библиотека, конечно, но для одного слайдера на странице вполне подходит, и его можно адаптировать под свои нужды. Я намеренно не стал приводить стилистику кода к единому формату, чтобы можно было видеть еще и результат работы нейросети.
Я лишь немного подправил оформление точек под слайдером, общий layout, прописал url для картинок и добавил заголовок и футер. Все остальное - заслуга нейросети. Я уже пробовал ранее использовать Bing и ChatGPT для написания кода, но такого успеха еще не было. Я потратил 10 минут, писал только запросы с телефона, при этом сам не писал код, а говорил что и как улучшить. Почти как в повседневной жизни, где я консультирую команды и даю рекомендации по улучшению быстродействия сайтов.
В итоге мы имеем слайдер, который полностью соответствует моим требованиям, не меняет DOM и не вызывает перерисовку при инициализации, и даже частично работает без JS. Это ли не чудо? )
✅ Ссылка на код слайдера.
Если кто-то захочет - можете улучшить его и упаковать в универсальную библиотеку, если пришлете ее мне - я с радостью расскажу о ней.
🔥 Зажгите огонь для Bing, или 👍 палец вверх за мои запросы и уточнения )
💬 Напишите в комментариях, что вы думаете об этом слайдере и о Bing конечно же.
🔥32👍29🎉2🤩2🤯1
Привет!
Есть два поста: про безболезненный defer всего js в старом legacy проекте, и про сервис для получения исторических данных Core Web Vitals из Chrome UX Report. Какой опубликовать в понедельник?
Есть два поста: про безболезненный defer всего js в старом legacy проекте, и про сервис для получения исторических данных Core Web Vitals из Chrome UX Report. Какой опубликовать в понедельник?
Anonymous Poll
65%
Про defer всего js
35%
Про исторический Core Web Vitals
👍12🔥6🤯2🤩2🕊1
Дорогие топовые фронтендеры, сегодня пост не для вас. Так как вы используете системы сборки и с такой проблемой почти никогда не сталкиваетесь, а в опросе вы выбрали вариант про defer для inline скриптов.
Иногда критически важно ускорить существующий сайт, например на Битрикс, но с выводом скриптов там вечная путаница, потому что тему использовали готовую, и затем долго дорабатывали её. Поэтому нет возможности прописать всем скриптам defer, так как на inline скрипты он не работает, а в коде много вызовов, которые используют тот же jquery или другие библиотеки и плагины.
Например, вот такой фрагмент скрипта
требует наличия загруженного jQuery, и вызовет ошибку, если у подключения jQuery написать defer.
Один из самых простых способов: использовать base64 и тот же defer для всех скриптов. Давайте превратим этот инлайн скрипт в base64 и подключим как через data, на которые этот defer распространяется
Да, браузеру придется декодировать base64, однако вам не придется следить за порядком выполнения, это сделает сам браузер. Да, это не самый оптимальный вариант - самый оптимальный переписать все нормально. Но если вы ограничены во времени/бюджете, то это неплохой вариант снять блокировку на первую отрисовку, улучшить #FCP, возможно #LCP и ничего не сломать на сайте.
Да, поддерживать такой код невозможно, поэтому нужно сделать так, чтобы вся работа происходила на бакенд и разгрузить фронт, улучшив первую отрисовку.
🔥 Дайте огня, если было полезно, или 👍 палец вверх, если уже использовал данный метод.
💬 Коммент, если хотите поддержать автора и улучшить его код.
Иногда критически важно ускорить существующий сайт, например на Битрикс, но с выводом скриптов там вечная путаница, потому что тему использовали готовую, и затем долго дорабатывали её. Поэтому нет возможности прописать всем скриптам defer, так как на inline скрипты он не работает, а в коде много вызовов, которые используют тот же jquery или другие библиотеки и плагины.
Например, вот такой фрагмент скрипта
<script>jQuery(document).ready(function(){alert('ok')});</script>требует наличия загруженного jQuery, и вызовет ошибку, если у подключения jQuery написать defer.
Один из самых простых способов: использовать base64 и тот же defer для всех скриптов. Давайте превратим этот инлайн скрипт в base64 и подключим как через data, на которые этот defer распространяется
<script src="data:text/javascript;base64, alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2FsZXJ0KCdvaycpfSk7" defer></script>Да, браузеру придется декодировать base64, однако вам не придется следить за порядком выполнения, это сделает сам браузер. Да, это не самый оптимальный вариант - самый оптимальный переписать все нормально. Но если вы ограничены во времени/бюджете, то это неплохой вариант снять блокировку на первую отрисовку, улучшить #FCP, возможно #LCP и ничего не сломать на сайте.
Да, поддерживать такой код невозможно, поэтому нужно сделать так, чтобы вся работа происходила на бакенд и разгрузить фронт, улучшив первую отрисовку.
🔥 Дайте огня, если было полезно, или 👍 палец вверх, если уже использовал данный метод.
💬 Коммент, если хотите поддержать автора и улучшить его код.
🔥49👍8🤩3👏1🤯1🎉1
Привет всем. Сегодня буду разбирать скорость сайтов на канале Михаила Шакина и давать общие рекомендации по ним.
https://www.youtube.com/watch?v=FYAS6Al8oFI
Кому интересно - приходите, все бесплатно и можно никуда не подписываться. Свой сайт на разбор можно отправить по ссылке: https://docs.google.com/forms/d/e/1FAIpQLSeHUoQwRsGvJut5HxIOM0YCu-QExtKO82mfv0dViP6BFJ3icA/viewform
Если понравятся разборы, можно будет повторить.
https://www.youtube.com/watch?v=FYAS6Al8oFI
Кому интересно - приходите, все бесплатно и можно никуда не подписываться. Свой сайт на разбор можно отправить по ссылке: https://docs.google.com/forms/d/e/1FAIpQLSeHUoQwRsGvJut5HxIOM0YCu-QExtKO82mfv0dViP6BFJ3icA/viewform
Если понравятся разборы, можно будет повторить.
👍22🔥9🎉3🤯2🤩1
Привет. В комментариях просили заранее анонсировать подобные эфиры. В пятницу, 6 октября, я вновь приглашен на прямой эфир к Михаилу Шакину, где буду разбирать скорость загрузки сайтов и давать рекомендации по ним.
https://www.youtube.com/watch?v=zyu19xiJRqA
Кто хочет — приходите, разборы бесплатные, только заранее отправьте свой сайт по ссылке: https://docs.google.com/forms/d/e/1FAIpQLSeHUoQwRsGvJut5HxIOM0YCu-QExtKO82mfv0dViP6BFJ3icA/viewform Отправляя, напишите, что вы с этого канала в комментарии. Кстати, можно и вопросы во время эфира задавать.
P.S.
Эх, как же хочется продолжить писать на канал.
Пишите в комменты к этому посту, кто хотел бы тут видеть не только мега полезные посты но и рассуждения/истории по теме канала.
https://www.youtube.com/watch?v=zyu19xiJRqA
Кто хочет — приходите, разборы бесплатные, только заранее отправьте свой сайт по ссылке: https://docs.google.com/forms/d/e/1FAIpQLSeHUoQwRsGvJut5HxIOM0YCu-QExtKO82mfv0dViP6BFJ3icA/viewform Отправляя, напишите, что вы с этого канала в комментарии. Кстати, можно и вопросы во время эфира задавать.
P.S.
Эх, как же хочется продолжить писать на канал.
Пишите в комменты к этому посту, кто хотел бы тут видеть не только мега полезные посты но и рассуждения/истории по теме канала.
YouTube
Анализ скорости загрузки сайтов - часть 2
Что замедляет скорость загрузки сайта? Что нужно оптимизировать в первую очередь, чтобы страницы быстро загружались? Какие еще есть ошибки в плане скорости?
Смотрите вебинар Антона Белогородцева.
Смотрите предыдущий вебинар с Антоном:
https://www.…
Смотрите вебинар Антона Белогородцева.
Смотрите предыдущий вебинар с Антоном:
https://www.…
🔥25👍14🎉3🙏2⚡1
Привет. Завтра 10 ноября снова буду в эфире на канале у Михаила Шакина, где буду анализировать сайты и давать советы по улучшению.
https://www.youtube.com/watch?v=klG1LDhlNU0
Приходите, кто хочет получить бесплатный разбор своего сайта. Главное - отправьте ссылку на сайт заранее через форму https://docs.google.com/forms/d/1pGnpcZaqMJhOYhhue3pITh1vFBoXyZOrYZPI_9S_oPY/edit в комментарии пишите, что вы с канала @perfScan
https://www.youtube.com/watch?v=klG1LDhlNU0
Приходите, кто хочет получить бесплатный разбор своего сайта. Главное - отправьте ссылку на сайт заранее через форму https://docs.google.com/forms/d/1pGnpcZaqMJhOYhhue3pITh1vFBoXyZOrYZPI_9S_oPY/edit в комментарии пишите, что вы с канала @perfScan
YouTube
Аудит скорости загрузки сайтов - часть 3
Как эффективно ускорить скорость загрузки сайта? Что надо улучшить в первую очередь? Как узнать, что замедляет скорость загрузки страниц?
Смотрите вебинар Антона Белогородцева.
👉 Предыдущие вебинары с Антоном по аудиту скорости загрузки сайтов:
ht…
Смотрите вебинар Антона Белогородцева.
👉 Предыдущие вебинары с Антоном по аудиту скорости загрузки сайтов:
ht…
👍17🔥5🙏2⚡1❤1🎉1🤩1
Привет всем. Завтра в 15-00 по МСК я проведу разбор скорости сайтов подписчиков на канале Михаила Шакина. Дам советы по улучшению и конечно подведу итоги года, и отвечу на все ваши вопросы. Да, и расскажу кое-что про новогодние украшения сайтов.
https://www.youtube.com/live/Ku6r1XWQTdU
Приходите, будет интересно, а если хотите, чтобы я разобрал ваш сайт, оставляйте заявку в форме
https://docs.google.com/forms/d/1pGnpcZaqMJhOYhhue3pITh1vFBoXyZOrYZPI_9S_oPY/edit в комментарии пометьте, что вы с телеграм канала @perfscan
https://www.youtube.com/live/Ku6r1XWQTdU
Приходите, будет интересно, а если хотите, чтобы я разобрал ваш сайт, оставляйте заявку в форме
https://docs.google.com/forms/d/1pGnpcZaqMJhOYhhue3pITh1vFBoXyZOrYZPI_9S_oPY/edit в комментарии пометьте, что вы с телеграм канала @perfscan
YouTube
Аудит скорости загрузки ваших сайтов - выпуск 4
Как ускорить скорость загрузки сайта? На что надо в первую очередь обратить внимание? Как правильно оптимизировать картинки и скрипты? Как улучшить Core Web Vitals?
Смотрите вебинар Антона Белогородцева.
✍️ Форма для сбора сайтов для аудита:
https:…
Смотрите вебинар Антона Белогородцева.
✍️ Форма для сбора сайтов для аудита:
https:…
1🔥24👍4🎉3⚡1😁1🤩1🤗1