Сценарій Яндекс.Метрики (тег.js) негативно впливає на PageSpeed: що робити

Таким чином, ви вирішили поліпшити свій рейтинг PageSpeed. Але в процесі верифікації ви помітили, що скрипти Яндекс.Метріка серйозно погіршують ситуацію (що особливо помітно при перевірці сайту на мобільних пристроях). Давайте розглянемо приклад з нашим веб-сайтом oddstyle.ru.

Підтримка Яндекса визнала цю проблему (але поки що нічого не виходить за рамки тестування):

У нас є наступний код для підключення Яндекс.Метріка:

<script type="text/javascript" >
   (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

[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

   ym(xxxxxxxx, "init", {
        clickmap:true,
        trackLinks:true,
        accurateTrackBounce:true
   });
</script>

При перевірці отримуємо наступні показники.

Природно, що ці показники так і є. Подивіться нижче і дивіться наступне:

Як ви можете бачити звідси, Metrica сильно блокує основний потік завантаження.

Природно, у нас є можливість взагалі відмовитися від нього. Якщо показник взагалі вимкнено, індикатор буде таким:

У багато разів краще.

Але що робити, якщо показник все ще потрібен, я хочу використовувати деякі його функції?

Одним з рішень є вклав виклик функції в setTimeout, щоб сценарій затримується до завантаження основного вмісту.

Ось як буде виглядати код сценарію (не забудьте замінити номер лічильника замість xxxxxxx):

<script data-cfasync="false" type="text/javascript">
  setTimeout(function(){
       (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

[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

       ym(xxxxxxxx, "init", {
            clickmap:true,
            trackLinks:true,
            accurateTrackBounce:true 
       });
    }, 5000); //set this as high as you can without ruining your stats.
</script> 

Замість 5000 вам потрібно буде вибрати значення, яке дозволить вам підтримувати хороший рейтинг PageSpeed (ви можете встановити більше 5000).

Вставте цей код у верхній колонтитул.php і мати такі елементи:

Трохи гірше, ніж немає сценарію метрики на всіх, але все ще більше.

Власне, setTimeout допоміг досягти хороших результатів для мобільних пристроїв, при цьому не відмовляючись від показників взагалі.

Для настільних комп’ютерів, у нас є наступне з цим кодом:

Якщо ви знаєте інші способи покращення PageSpeed для сценаріїв показників, поділіться ними в коментарях.

Прокоментувати

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *