Google pagespeed

12
Volovikov
На сайте с 06.12.2016
Offline
144
#11
i.lisovenko #:
Ну у меня цифры 100 100 96 100, бесит только 96 из за счетчика Яндекса
у ВК показатели:

Им развиваться это никак не мешает. 
Российский спорт ▶ https://russian-sports.ru
Volovikov
На сайте с 06.12.2016
Offline
144
#12
i.lisovenko :
Понимаю что вроде как от меня это вообще и не зависит (пишет это на всех сайтах, где есть счетчик) но как-нибудь это все таки обойти можно?
Отложенную загрузку слышал делают. 
Vladimir
На сайте с 07.06.2004
Offline
629
#13
i.lisovenko #:
Ну у меня цифры 100 100 96 100, бесит только 96 из за счетчика Яндекса

Отложенная закрузка

Последний и лучший вариант на серче:

( function () {
                'use strict';
 
                // Флаг, что Метрика уже загрузилась.
                var loadedMetrica = false,
                    // Ваш идентификатор сайта в Яндекс.Метрика.
                    metricaId     = *********,
                    // Переменная для хранения таймера.
                    timerId;
 
                // Для бота Яндекса грузим Метрику сразу без "отложки",
                // чтобы в панели Метрики были зелёные кружочки
                // при проверке корректности установки счётчика.
                if ( navigator.userAgent.indexOf( 'YandexMetrika' ) > -1 ) {
                    loadMetrica();
                } else {
                    // Подключаем Метрику, если юзер начал скроллить.
                    window.addEventListener( 'scroll', loadMetrica );
 
                    // Подключаем Метрику, если юзер коснулся экрана.
                    window.addEventListener( 'touchstart', loadMetrica );
 
                    // Подключаем Метрику, если юзер дернул мышкой.
                    document.addEventListener( 'mouseenter', loadMetrica );
 
                    // Подключаем Метрику, если юзер кликнул мышкой.
                    document.addEventListener( 'click', loadMetrica );
 
                    // Подключаем Метрику при полной загрузке DOM дерева,
                    // с "отложкой" в 1 секунду через setTimeout,
                    // если пользователь ничего вообще не делал (фоллбэк).
                    document.addEventListener( 'DOMContentLoaded', loadFallback );
                }
 
                function loadFallback() {
                    timerId = setTimeout( loadMetrica, 3000 );
                }
 
                function loadMetrica( e ) {
 
                    // Пишем отладку в консоль браузера.
                    if ( e && e.type ) {
                        console.log( e.type );
                    } else {
                        console.log( 'DOMContentLoaded' );
                    }
 
                    // Если флаг загрузки Метрики отмечен,
                    // то ничего более не делаем.
                    if ( loadedMetrica ) {
                        return;
                    }
 
                    (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
   m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
   (window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym");
                    ym( metricaId, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:2000 });
 
                    // Отмечаем флаг, что Метрика загрузилась,
                    // чтобы не загружать её повторно при других
                    // событиях пользователя и старте фоллбэка.
                    loadedMetrica = true;
 
                    // Очищаем таймер, чтобы избежать лишних утечек памяти.
                    clearTimeout( timerId );
 
                    // Отключаем всех наших слушателей от всех событий,
                    // чтобы избежать утечек памяти.
                    window.removeEventListener( 'scroll', loadMetrica );
                    window.removeEventListener( 'touchstart', loadMetrica );
                    document.removeEventListener( 'mouseenter', loadMetrica );
                    document.removeEventListener( 'click', loadMetrica );
                    document.removeEventListener( 'DOMContentLoaded', loadFallback );
                }
            } )()


Аэройога ( https://vk.com/aeroyogadom ) Йога в гамаках ( https://vk.com/aero_yoga ) Аэройога обучение ( https://aeroyoga.ru ) и просто фото ( https://weandworld.com )
P
На сайте с 17.08.2025
Offline
17
#14
 да давно все говорят че не смотреть на него и тд.

Вроде лет 5 назад говорили что гугль очень любит сайты которые быстро грузятся. Статика. 

EE
На сайте с 02.01.2021
Offline
184
#15
Авито не то что по PageSpeed, а в реале ложит на лопатки некоторые смартфоны, планшеты и даже слабенькие ноутбуки (выпущенные примерно 8 и более лет назад) при скроллинге ленты с объявлениями - страницы либо зависают, либо вылетают и это не мешает им быть в топе.
AB
На сайте с 08.10.2007
Offline
138
#16
Vladimir #:
( function () {
                'use strict';
 
                // Флаг, что Метрика уже загрузилась.
                var loadedMetrica = false,
                    // Ваш идентификатор сайта в Яндекс.Метрика.
                    metricaId     = *********,
                    // Переменная для хранения таймера.
                    timerId;
 
                // Для бота Яндекса грузим Метрику сразу без "отложки",
                // чтобы в панели Метрики были зелёные кружочки
                // при проверке корректности установки счётчика.
                if ( navigator.userAgent.indexOf( 'YandexMetrika' ) > -1 ) {
                    loadMetrica();
                } else {
                    // Подключаем Метрику, если юзер начал скроллить.
                    window.addEventListener( 'scroll', loadMetrica );
 
                    // Подключаем Метрику, если юзер коснулся экрана.
                    window.addEventListener( 'touchstart', loadMetrica );
 
                    // Подключаем Метрику, если юзер дернул мышкой.
                    document.addEventListener( 'mouseenter', loadMetrica );
 
                    // Подключаем Метрику, если юзер кликнул мышкой.
                    document.addEventListener( 'click', loadMetrica );
 
                    // Подключаем Метрику при полной загрузке DOM дерева,
                    // с "отложкой" в 1 секунду через setTimeout,
                    // если пользователь ничего вообще не делал (фоллбэк).
                    document.addEventListener( 'DOMContentLoaded', loadFallback );
                }
 
                function loadFallback() {
                    timerId = setTimeout( loadMetrica, 3000 );
                }
 
                function loadMetrica( e ) {
 
                    // Пишем отладку в консоль браузера.
                    if ( e && e.type ) {
                        console.log( e.type );
                    } else {
                        console.log( 'DOMContentLoaded' );
                    }
 
                    // Если флаг загрузки Метрики отмечен,
                    // то ничего более не делаем.
                    if ( loadedMetrica ) {
                        return;
                    }
 
                    (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
   m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
   (window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym");
                    ym( metricaId, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:2000 });
 
                    // Отмечаем флаг, что Метрика загрузилась,
                    // чтобы не загружать её повторно при других
                    // событиях пользователя и старте фоллбэка.
                    loadedMetrica = true;
 
                    // Очищаем таймер, чтобы избежать лишних утечек памяти.
                    clearTimeout( timerId );
 
                    // Отключаем всех наших слушателей от всех событий,
                    // чтобы избежать утечек памяти.
                    window.removeEventListener( 'scroll', loadMetrica );
                    window.removeEventListener( 'touchstart', loadMetrica );
                    document.removeEventListener( 'mouseenter', loadMetrica );
                    document.removeEventListener( 'click', loadMetrica );
                    document.removeEventListener( 'DOMContentLoaded', loadFallback );
                }
            } )()

Замечания и риски

  1. Комментарий не совпадает с кодом
    В комментарии написано про задержку в 1 секунду, а в коде setTimeout(loadMetrica, 3000)   3 секунды.

  2. Скрипт после DOMContentLoaded
    Если этот блок выполняется уже после события DOMContentLoaded  (например, асинхронный бандл внизу страницы), подписка на DOMContentLoaded  не сработает, фоллбэк по таймеру может никогда не запланироваться, и Метрика загрузится только при взаимодействии. Надёжный вариант: при document.readyState !== 'loading'  сразу вызывать loadFallback()  (или сразу loadMetrica  по политике продукта).

  3. mouseenter  на document
    Срабатывает при входе курсора в документ; на тач-устройствах без мыши это почти не помогает — но есть touchstart , скролл и таймер.

  4. console.log
    В продакшене лучше убрать — шум в консоли и лишняя работа.

  5. Источник tag.js с jsDelivr
    Это не официальный хостинг Яндекса. Обычно используют https://mc.yandex.ru/metrika/tag.js . Зеркало может отличаться по версии и политике обновлений; с точки зрения доверия и соответствия документации безопаснее официальный URL.

  6. Параметры init
    Указаны только clickmap , trackLinks , accurateTrackBounce . Если нужны вебвизор, ecommerce, отложенная загрузка и т.д. — их нужно явно добавить в объект настроек.

  7. Метрика и «зелёные кружочки»
    Для обычных пользователей отложенная загрузка может слегка сдвигать фиксацию первых просмотров и очень коротких отказов по сравнению с немедленной установкой — это компромисс скорости страницы и полноты данных.


    Ну в Гугл спидтест при отложенной загрузке станет не 96, а 100.

AB
На сайте с 08.10.2007
Offline
138
#17
i.lisovenko :
Всем привет. Давно тут не писал. Делаю новый проект и опять столкнулся с этим Google pagespeed, да давно все говорят че не смотреть на него и тд.. Но чисто галочка в голове какая то, хочу добить. Раньше когда Яндекс счетчик ставил, пункт рекомендации всегда был 100%, сейчас проверю все свои сайты и новый в том числе, рекомендация 96%  и вот что пишут:  Ошибки браузера занесены в журнал консоли 

WebSocket connection to 'wss://mc.yandex.com/solid.ws' failed: Error in connection establishment: net::ERR_NAME_NOT_RESOLVED

Понимаю что вроде как от меня это вообще и не зависит (пишет это на всех сайтах, где есть счетчик) но как-нибудь это все таки обойти можно? Вроде уже и все в настройках счетчика поотключал типа webvisor и тд.

Отложенная загрузка поможет

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий