Tag Archives: Google Analytics
Отдебажить и проинспектировать различную аналитику
https://chrome.google.com/webstore/detail/observepoint-tag-debugger/daejfbkjipkgidckemjjafiomfeabemo?hl=en-US
Логирование времени загрузки страниц в piwik
В продолжение темы логирования ошибок в пивик. Неплохо было бы логировать в ту же систему и время загрузки страницы у реальных пользователей. Для этого в упомянутый в предыдущей статье логгер нужно добавить следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
function logTimings() { setTimeout(function () { if (! window.performance || ! window.performance.timing) { return; } var timing = window.performance.timing; var perf = { dns_lookup: getTime(timing, 'domainLookupStart', 'domainLookupEnd'), ttfb: getTime(timing, 'requestStart', 'responseStart'), response: getTime(timing, 'responseStart', 'responseEnd'), dom_parse_and_js: getTime(timing, 'domLoading', 'domInteractive'), dom_ready_cbs: getTime(timing, 'domContentLoadedEventStart', 'domContentLoadedEventEnd'), to_dom_ready: getTime(timing, 'responseStart', 'domContentLoadedEventEnd'), to_load: getTime(timing, 'responseStart', 'domComplete') }; perf.type = 'timings'; perf.msg = perf.to_dom_ready; perf.ua = navigator && navigator.userAgent; perf.href = window.location.href; logToPiwik(perf); }, 5000); } function getTime(timing, from, to) { if (timing[from] && timing[to]) { return (timing[to] - timing[from]) / 1000; } return null; } |
И поправить window.onload на:
1 2 3 4 5 6 7 8 |
window.onload = function() { if (! window.__angularLoaded) { window.logError({type: 'app-not-started'}); } logTimings(); }; |
Подробнее об объекте window.performance.timing можно почитать тут — https://blog.bullgare.com/2014/12/%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-%D1%81-navigation-timing-api/ или сразу на mdn https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.
Логирование js-ошибок в piwik (аналог google analytics)
Piwik — аналог google analytics, который ставится на свой домен. Копирует апи google analytics, так что всё описанное можно с небольшими изменениями применить и при использовании google analytics.
Сбор статистики ошибок AngularJS-приложения через Google Analytics
Делается через пользовательские события. Для сбора ошбок достаточно где-то на странице подключить код аналитики (https://support.google.com/analytics/answer/1009694?hl=en). Как можно выше на bootstrap-странице (ндексной странице) подключить «инлайновый» скрипт для обработки общих ошибок:
Universal Analytics вместо Google Analytics
Теперь Google предлагает новый analytics, вот статья про отличия от старого-доброго: https://developers.google.com/analytics/devguides/collection/upgrade/reference/gajs-analyticsjs Допустим, кастомное отслеживание посещения поменялось с
1 |
_gaq.push(['_trackPageview', 'page path'); |
на
1 |
ga('send', 'pageview', 'page path'); |
Пользовательские переменные в Google Analytics
Смотреть в Аудитория → Персонализованный → Мои переменные
Счётчик от Google Analytics в приложении AngularJS
index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<script type="text/javascript"> // TODO for mamba.ru only var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-...']); _gaq.push(['_setDomainName', '...']); (function () { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> |
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var app = angular.module('my', []).config(); app.run(['$location', function($location) { $rootScope.$on('$locationChangeSuccess', function(e, next, current) { trackPageView(); }); function trackPageView() { if (window._gaq) { // it's optional window._gaq.push(['_setCustomVar', 1, // This custom var is set to slot #1. Required parameter. 'site_version', // The name acts as a kind of category for the user activity. Required parameter. 'my' // This value of the custom variable. Required parameter. ]); window._gaq.push(['_trackPageview'], $location.url()); } } }]); |
https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables http://davidwalsh.name/ajax-analytics