Всем привет! Иногда бывает, что счётчики Google Analytics, Яндекс.Метрика и счётчик mail.ru тормозят загрузку основной страницы. Написал js скрипт для того, чтобы это избежать.
jQuery(document).ready(function($) { $.ajaxSetup({cache : true}); // Данные для Google Analytics window.dataLayer = []; window.gtag = function() { window.dataLayer.push(arguments); } $.getScript( // !! ОБЯЗАТЕЛЬНО ЗАМЕНИТЕ ИДЕНТИФИКАТОР GOOGLE ANALYTICS "G-41BWRDZLG5" НА СВОЙ !! 'https://www.googletagmanager.com/gtag/js?id=G-41BWRDZLG5', function() { gtag('js', new Date()); gtag('config', 'G-41BWRDZLG5'); } ); // Данные для Яндекс.Метрики window.ym = function() { (window.ym.a||[]).push(arguments); } window.ym.l = 1*new Date(); $.getScript( 'https://mc.yandex.ru/metrika/tag.js', function() { // !! ОБЯЗАТЕЛЬНО ЗАМЕНИТЕ ИДЕНТИФИКАТОР ЯНДЕКС МЕТРИКИ "91531653" НА СВОЙ !! ym(91531653, "init", { webvisor:true, trackLinks:true, clickmap:true, accurateTrackBounce:false } ); } ); // Данные для top.mail.ru var _tmr = window._tmr || (window._tmr = []); _tmr.push({ // !! ОБЯЗАТЕЛЬНО ЗАМЕНИТЕ ИДЕНТИФИКАТОР MAIL.RU "2601331" НА СВОЙ !! id: "2601331", type: "pageView", start: (new Date()).getTime() }); $.getScript('//top-fwz1.mail.ru/js/code.js'); }); |
Известная бага счётчика Яндекс.Метрика — замедление сайта, поэтому скачал его локально в папку [wordpress_folder]/metrika
и добавил в задачу в crontab для обновления этого файла каждый час, Затем заменил https://mc.yandex.ru/metrika/tag.js
в скрипте выше на /metrika_tag.js
.
@hourly curl -s https://mc.yandex.ru/metrika/tag.js -o [wordpress_folder]/metrika_tag.js |
Источник вдохновения статья Yandex Metrika: Сторонний код заблокировал основной поток.
Чтобы добавить загрузку счётчиков в WordPress, необходимо положить его содержимое в файлик wordpress/wp-content/themes/[ваша_тема]/js/counters.js
и добавить следующий код в wordpress/wp-content/themes/[ваша_тема]/functions.php
:
function enqueue_counter() { // Регистрируем скрипт wp_register_script('counters', get_template_directory_uri() . '/js/counters.js', array('jquery'), false, true); // Загружаем скрипт wp_enqueue_script('counters'); } add_action('wp_enqueue_scripts', 'enqueue_counters'); |
Я использую проверку, что пользователь не авторизован, зачем мне отслеживать самого себя:
function enqueue_counter() { // Регистрируем скрипт wp_register_script('counters', get_template_directory_uri() . '/js/counters.js', array('jquery'), false, true); // Загружаем скрипт, если пользователь неавторизован if (!is_user_logged_in()) { wp_enqueue_script('counters'); } } add_action('wp_enqueue_scripts', 'enqueue_counters'); |
Не забудьте поменять идентификаторы счётчиков и проверить, что tag.js
доступен по адресу [ваш сайт]/metrika/tag.js
, если вы решили воспользоваться ускорением загрузки счётчика.