Логирование времени загрузки страниц в piwik

В продолжение темы логирования ошибок в пивик.

Неплохо было бы логировать в ту же систему и время загрузки страницы у реальных пользователей.

Для этого в упомянутый в предыдущей статье логгер нужно добавить следующее:

	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` на:

	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.

LEAVE A COMMENT