Как ускорить Яндекс Метрику

[Удален]
#41

aleksandrbol, попробуй запускать её после загрузки страницы, кстати примерно на 20% снизишь отказы (в отчёте метрике) ;)

Devvver
На сайте с 02.07.2008
Offline
663
#42
burunduk:
попробуй запускать её после загрузки страницы

нужно решение :)

Тоже о этом давно думал. Спецы по JS есть?

Мой блог. Все о создании сайтов,Seo и СДЛ ( https://devvver.ru/ ) Мой SEO телеграм канал https://t.me/seobloggers
Александр
На сайте с 17.07.2009
Offline
371
#43
burunduk:
aleksandrbol, попробуй запускать её после загрузки страницы, кстати примерно на 20% снизишь отказы (в отчёте метрике) ;)

для меня эти метричные отказы совсем не интересны, мне важно, что бы юзер получал страницу быстро.

Сайты на WordPress тут просто летают! (https://vk.cc/atAGUU)
[Удален]
#44
Devvver:
Тоже о этом давно думал. Спецы по JS есть?

для старого кода просто в самом конце своего js


jQuery(document).ready(function(){var w=window,d=document,c='yandex_metrika_callbacks';(w[c]=w[c]||[]).push(function(){try{w.yaCounter=new Ya.Metrika({id: myId,enableAll:true,webvisor:true});}catch(e){}});var e=d.createElement('script');e.type='text/javascript';e.async=true;e.src=(d.location.protocol=='https:'?'https:':'http:')+'//mc.yandex.ru/metrika/watch.js';var s=d.getElementsByTagName('script')[0];s.parentNode.insertBefore(e, s);});

причём условие запуска с Query(document).ready можно поменять на любое другое

как запустить новый код пока не разобрался

H
На сайте с 01.04.2014
Offline
571
Had
#45
LazyBadger:
Had, опять не принял лекарства? Так лучше молчи, со своими советами "по Остеру"

Принял. Днём 6 бутылок пива и час назад пол литра водки. Обоснуй, что я неправ. Что не так с моим решением проблемы ТС-а?

big jacky
На сайте с 04.05.2013
Offline
86
#46
burunduk:
для старого кода просто в самом конце своего js



причём условие запуска с Query(document).ready можно поменять на любое другое

как запустить новый код пока не разобрался

Спасибо. А если я хочу запускать через setTimeout()? Например по скроллу или через 1 сек?

[Удален]
#47

big jacky, так обработчиков событий куча, любой используйте, какой вам нравится

Алексей
На сайте с 23.02.2009
Offline
572
#48
burunduk:
aleksandrbol, попробуй запускать её после загрузки страницы, кстати примерно на 20% снизишь отказы (в отчёте метрике) ;)

Отчеты это одно, а положительный ПФ это другое ☝

Программирование на ПХП для сайтов на MODX - автоматизация, парсинг, автоматическое наполнение, формы заказов с расчетом цен и парсингом. Программирование функционала, которого нет в паблик решениях. Все вопросы в личку - отвечу смогу или нет, сроки и цены, условия.
F1
На сайте с 09.12.2019
Offline
33
#49

У меня отлично работает такая схема:

1) Отключить вебвизор.

2) Весь код метрики запихиваем в setTimeout с не очень большим временем, например, 300 мс. Точный таймаут подбирается опытным путем с помощью webpagetest.

3) Добавить в шапку <link href="https://cdn.jsdelivr.net" rel="dns-prefetch">.

4) Если не устраивает загрузка по таймауту, то watch.js храним у себя на сервере, грузим с того же хоста, что и всё остальное. Никакие cdn'ы и шардирования ненужны, когда сейчас есть HTTP/2. JS обновляем раз в сутки по крону:

30 2 * * * php /var/www/ПУТЬ_К_САЙТУ/metrika_update.php >> /var/log/metrika_update.log

Код скрипта обновления примерно такой:


<?php
$c = file_get_contents('https://cdn.jsdelivr.net/npm/yandex-metrica-watch/watch.js');
$tmp_fn = __DIR__ . '/tmp/yandex-metrica' . time() . '.tmp';
$tmp_gz_fn = $tmp_fn . '.gz';
$js_fn = __DIR__ . '/js/yandex-metrica/watch.js';
$js_gz_fn = $js_fn . '.gz';
file_put_contents($tmp_fn, $c);
if(file_exists($tmp_fn)){
if(filesize($tmp_fn) > 50000){
exec('gzip -k9 ' . $tmp_fn);
if(file_exists($tmp_gz_fn)){
unlink($js_fn);
unlink($js_gz_fn);
rename($tmp_fn, $js_fn);
rename($tmp_gz_fn, $js_gz_fn);
} else die("Can't gzip the file " . $tmp_fn . "!");
} else die("The downloaded file " . $tmp_fn . " is truncated (" . filesize($tmp_fn) . "bytes)!");
} else die("Can't download the file!");

Предполагается, что в php.ini включена функция exec, и у вас VPS/дедик с Debian/Ubuntu.

LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#50
exec('gzip -k9 ' . $tmp_fn);
включена функция exec,

Т.е. по вашему в PHP нет стандартной функции для сжатия? И зачем сжимать код, если и так nginx налету будет сжимать эти JS файлы.

Если не устраивает загрузка по таймауту, то watch.js храним у себя на сервере

Бестолковая вещь. Если таймаут то и считать он не будет, значит это бесполезный кусок кода на ваше сайте.

1) Отключить вебвизор.

Конечно. Лучше выбросить сразу метрику с сайта и всё. Не нужно мучатся.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/

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