Клуб Яндекс.Метрики

Google's PageSpeed Insights снимает баллы за код счётчика Яндекс.Метрики

Пост в архиве.

Встроил в один из веб-проектов код Яндекс.Метрики. На всякий случай, чтобы не тормозить загрузку основного контента страницы (важно для SEO на Гугле), использовал асинхронный вариант и вставил его между тегами </footer> и </body> ближе к концу тела страниц.

Оцениваю состояние страниц с помощью Google's PageSpeed Insights. Он снимает баллы за скрипт Метрики на странице. Выдаёт следующее:

Leverage browser caching for the following cacheable resources:
https://mc.yandex.ru/metrika/watch.js (60 minutes)

Несколько месяцев назад общался по этому поводу с саппортом Яндекса, но решения проблемы так и не добился.

Недавно зацепил снова эту проблему. На одном из форумов посоветовали использовать синхронный вызов счётчика или вообще загружать скрипт со своего хостинга (обновлять его там периодически роботом).

Есть ли какие-то более простые и надёжные способы решения данной проблемы? Стоит ли бояться синхронной загрузки скрипта Метрики с оригинального сайта?

34 комментария
Katherine (Yandex)
1 марта 2016, 15:03
Здравствуйте!

Асинхронный вариант кода счётчика - правильное решение.

>> Leverage browser caching for the following cacheable resources:
>> https://mc.yandex.ru/metrika/watch.js (60 minutes)

Это сообщение говорит о времени хранения кеша кода счётчика в течение 60 минут.
Это оптимальное время, которое никак не влияет на скорость загрузки сайта.
А вот загрузка кода счетчика с другого домена может вызвать проблемы в его работоспособности.
Katherine (Yandex),
После вставки 
 Leverage browser caching for the following cacheable resources:
 https://mc.yandex.ru/metrika/watch.js (60 minutes) - гугл не ругается но и сайт не работает. Как именно это нужно вставлять может я что-то неверно делаю?
Дмитрий Александров
1 марта 2016, 21:30
Да не парься, не та это проблема.
Если сильно принципиально и хочется оптимизировать все, то вот недавно писал скрипт который сохраняет код метрики у себя на сайте и через крон автоматически обновляется.

Код можно взять тут http://vasilenko.info/pagespeed-cache/ и прочитать как это все настроить
Андрей Девятов
19 марта 2016, 18:07
Как вариант можете установить на сайт Google Tag Manager и добавить счетчик метрики через него.
Андрей Девятов,
 Это не решит проблему.
Вилы Выкидные
25 декабря 2016, 06:00
Не нужно ничего скачивать никакими кронами, просто отшиваем юзерагента PageSpeed Insights в области кода, где у нас аналитика установлена, ггы.. 


<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Speed Insights') === false): ?>


тут вставляем код гугл аналитики и (или) яндекс метрики


<?php endif; ?>



радуемся, аве мне :)
Обновлено 25 декабря 2016, 06:04
Вилы Выкидные,
такие костыли только индусы делают и горе-программисты. Поменялся юзерагент, в код лезть сразу?
Вилы Выкидные,
Хорошее решение как по мне. Благодарочка!
Вилы Выкидные,
очень неразумно надеяться, что указанный юзерагент единственно правильный для оценки ресурса гуглом.
Вилы Выкидные
1 мая 2017, 17:57
Farlow,
очень разумно качать чужие скрипты на свой сервак и долбить его кроном ради того, чтобы какой-то сомнительный сервис сообщал Вам о том, что ВАШ сайт не оптимизирован, ПОТОМУ ЧТО ИХ ЖЕ СТАТИСТИКА не кэшируется )))


И этот юзерагент не оценивает сайт, этим юзерагентом бот оценки заходит на Ваш сайт, поэтому вся логика сводится к тому, что если сервис дал код счётчика статистики, то Вам его не обязательно показывать юзерагенту оценочного бота того же самого сервиса )))


А вообще мне это вообще не важно, я просто одно время задавался целью сделать 100 из 100 и сделал И ЗАБЫЛ и даже не заморачиваюсь.
Обновлено 1 мая 2017, 17:59
Вилы Выкидные,
с тем же успехом для этого юзерагента можено отдавать пустую хтмлку, с текстом "hello world" - не нужно будет париться с оптимизацией других элементов страницы :facepalm
Вилы Выкидные
2 мая 2017, 10:28
Farlow,
 я лично не занимаюсь ерундой по закачке посторонних скриптов от гугл для кэширования их у себя на сервере от того, что гугл наплевал на своих пользователей и не удосужился сообщить своему оценочному боту, чтобы тот не учитывал их косяк по срокам кэширования их скрипта.


А вообще эта трабла разовая и она нужна только для нескольких тестирований в процессе отладки, поэтому закрыл метрику от бота, убрал косяки, ну и убирай или оставь этот код, от этого НИЧЕГО НЕ ИЗМЕНИТСЯ.


А вообще оптимизацией сайтов нужно заниматься на профессиональном софте, но не каким-то гуглом и выглядеть это должно примерно так


http://skrinshoter.ru/s/020517/i2PZYd8T
Вилы Выкидные,
Шикарно, вообще. Спасибо!)
Вилы Выкидные,
ну короче user agent изменился походу) теперь пишем так: 


<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Lighthouse') === false): ?>
тут вставляем код гугл аналитики и (или) яндекс метрики
<?php endif; ?>
Вариант с хранением файла метрики локально и скачиванием новой версии по крону самый простой и всеми советуемый. Мало того, можно даже через wget крон настроить скачивать файл в нужную папку.
Обновлено 29 декабря 2016, 04:25
Удалённый пользователь
25 июня 2020, 15:00
iekmuby,
если на сайте стоят блоки Рся, то хранение файла метрики полностью бесполезная затея. Рся тянет код метрики все равно извне) В общем, с сервисами яндекса все сложно.... Любой код яндекса тянет все остальное.... Снимаешь кнопки соц.сетей, а в коше яндекс шеир подтягивается))
Вилы Выкидные
29 декабря 2016, 05:09
1. А кроном долбить сервак каждый час - это весьма гениальное решение, особенно ещё такой шнягой, как wget.


2. Точно так же, как Вы думаете, что с какого-то бугра сменится юзерагент какой-то очередной шняги от гугла, которую юзают "ВЕЛИКИЕ ПРОГРАММИСТЫ", точно так же может смениться адрес для скачивания кодов метрики. И что, в код лезть сразу?


3. Скачанный таким образом код метрики не виден при проверке правильности его установки.


4. Не на всех хостах и не у всех юзеров стоят планировщики кронзадач да и тупо большинство не умеет его юзать.


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


6. Красиво набиваете посты на форумах, пытаясь троллить посты других юзеров бессмысленными предложениями столетней давности, wget и cron  бабушка моя ещё юзала с динозаврами.
Вилы Выкидные,


> А кроном долбить сервак каждый час
Откуда инфа, что каждый час?



>это весьма гениальное решение,
Оценка гениальности не найдена.



>особенно ещё такой шнягой, как wget.
Что за чушь здесь написана, так и не понял. Wget - это просто инструмент. Есть другие, но и он вполне рабочий.



>точно так же может смениться адрес для скачивания кодов метрики. И что, в код лезть сразу?
Поверьте, у вас будет порядочно времени, чтобы сменить то, что названо "кодом". На многих сайтах счётчики метрики работают многогодовалой давности и вполне себе успешно.



>3. Скачанный таким образом код метрики не виден при проверке правильности его установки.
Немного вытянуть вперёд руки и полный порядок.



>4. Не на всех хостах и не у всех юзеров стоят планировщики кронзадач да и тупо большинство не умеет его юзать.
Не у всех и бэкенд на PHP... И PHP не все юзать умеют. И т. д., и т.п.



>5. Я указал самый простой способ избавить себя от сообщения от гугл, что их же метрика наравне с яндексом не кешируется без всякого геммороя.
Вопрос не в этом был, перечитайте. Простота не причём, важна эффективность решения, чтобы снять не сообщение, а вероятную проблему.



>6. Красиво набиваете посты на форумахНу а сами-то?


На самом деле решение с закачкой по крону (или ещё как-то, и не суть важно чем - в инете полно вариантов) на свой сайт не такое уж действительно простое. Многие сторонние скрипты приходится адаптировать в процессе этой самой закачки и правда, бывает, что надо прямо переписывать код. Не могу сказать, что оно годится для тех, кто своих бабушек не любит, но вот если у вас серьёзный хостинг и он ближе к клиенту, чем гугловские и яндексовские сервера, то закачка скрипта станет попросту быстрее и появляется новый аргумент в пользу такой раздачи. Кроме этого, бывает ситуация, когда провайдер обеспечивает интернет внутри одного города, а каналы связи с другими городами пострадали. В некоторых регионах такая ситуация бывает пару раз в год и люди на приличное время теряют связь с серверами Гугла / Яндекса, при этом сохраняя коннект с локальным хостингом. В итоге обеспечение надёжней и менее зависимо от действий РКН, например. Вспомните ситуацию со шрифтами.


Итог простой: раздача всех скриптов со своего хостинга делает работу сайта надёжней и быстрей (можно передавать скрипты встраивая их в страницу полностью, снижая сразу и количество запросов (ещё ДНС, помните)), делая страницу максимально быстрой, что эффективно для больших и серьёзных решений. Из-за сложности реализации способ не рекомендовал бы новичкам, тем, у кого на сайте невысокая нагрузка и ещё тем, кто считает молоток плохим инструментом, потому что  он слишком древний.
Полиграфия Лик
10 апреля 2017, 08:05
Так же столкнулся с проблемой кеша счетчика.
Сайт на joomla и счетчики в шаблоне подключены таким способом

<?php include JPATH_BASE . DS . 'templates' . DS . 'шаблон' . DS . 'html' . DS . 'metrika.php'; ?>
Ставлю код для скрытия счетчиков от PageSpeed
<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Speed Insights') === false): ?>
<?php include JPATH_BASE . DS . 'templates' . DS . 'мой шаблон' . DS . 'html' . DS . 'metrika.php'; ?>
<?php endif; ?>
и этот код не срабатывает показатели остались и поменялись.
Вилы Выкидные
23 апреля 2017, 18:23
Полиграфия Лик,
дебажте, что содержит $_SERVER['HTTP_USER_AGENT']


код не может не работать априори
Обновлено 23 апреля 2017, 18:23
Удалённый пользователь
8 декабря 2017, 12:30
Говорили, говорили и пусто, никто ничего не сказал по делу. Зачем писать, если человеку не знаете что сказать. Мне тоже это интересно, но найти на самом деле хороший сове - бесполезное дело.
Столкнулся с такой проблемой, но Google определил сайт как вирусный
Так и гугловый analytics.js  с таким временем кэширования, что Page Speed на него ругается
Лично я добился максимальных показателей google PageSpeed, благодаря ряду хиростей, в том числе и использованию cron для подгрузки скриптов. Если кому интересно, вот статья о том, как сделать внешние файлы внутренними  https://seovpmr.ru/optimization/google-pagespeed-insights.html
для любителей jq:
function AppMetrica(){/*добавим тело метрики к странице*/}
$(document).one('scroll mosemove',AppMetrica);
setTimeout(AppMetrica,6000)
Василий
Сотрудник Яндекса29 января 2020, 13:41
В настоящее время мы работаем над новой версией кода счетчика, который будет работать быстрее. Записывайтесь на закрытое тестирование: https://yandex.ru/blog/metrika/otkryvaem-zapis-na-testirovanie-novogo-koda-schetchika 

На данный момент в тестирование, в первую очередь, мы сможем взять счетчики с большим объемом трафика (~10 000 посетителей в неделю), т.к. на таких счетчиках можно быстрее протестировать работу нового кода. 


Обновлено 4 февраля 2020, 10:28
дурни, гугл просек  и эту фишку. спасибо вам, любители похвастаться)))
Это ужасно, код рся рубит на корню 40% баллов в google page speed, без него, если оставить код google analytics, то всё прекрасно, как только ставишь рся, всё в красноту превращается в результатах тестирования page speed👎
Обновлено 14 сентября 2020, 01:48
Удалённый пользователь
17 сентября 2020, 15:55
Чтобы не снимались баллы, я обычно загружаю счетчик только после загрузки страницы и накидываю пару секунд сверху через setTimeout, тогда счетчик (и все что он добавляет в dom-дерево) не блокирует основной поток. и google page speed не ругается на него
поделитесь опытом, как вы делаете это?
Sergey V.B.,


<script>
setTimeout(function(){
// JS-код метрики...
}, 1000);
</script>
feedback@otpugivateli-sobak.ru
12 сентября 2021, 20:57
XPX-Shop,
Спасибо, братишка..
Руслан Романов
13 мая 2021, 16:03
Чисто в теории так можно любой код сделать В том числе и РСЯ, только вот не понятно как он отреагирует, он же собирает инфу на людей для подбора подходящей рекламы. Будем тестить спасибо.