Jak zjistit velikost odesílaných dat do Google Analytics

Limit pro množství odesílaných dat do Google Analytics dělá uživatelům potíže. Proč? Jeho překročením totiž neodešlete data žádná. Jak ale zjistit limit a kontrolovat množství odesílaných dat? Vysvětlím vám, jak a z čeho se limit počítá a následně ukážu varianty k jeho ověření. Není to ovšem úplně triviální metoda a vyžaduje trochu uživatelské zručnosti.

O jaký limit se jedná?

Jde o limit velikosti odesílaných dat, tzv. hitu. Pokud máte na stránce základní kód Google Analytics nebo Universal Analytics, tak sám od sebe na každé stránce odesílá tzv. pageview. Ta obsahuje nejrůznější informace o stránce: její doménu, cestu, název. Současně se posílá celá řada informací dalších, jako rozlišení a barvy monitoru, používaný jazyk, druh prohlížeče a mnoho dalšího.

Dosud se však jednalo o poměrně malé množství dat, které do příchodu Enhanced Ecommerce, nikoho příliš netrápilo. S nástupem Enhanced Ecommerce, v jejich plné implementaci, však přibylo do reportů elektronického obchodu mnoho nových dat, která je potřeba posbírat a odněkud poslat. A tím místem je standardně právě počítač vašeho uživatele.

Aby servery Googlu unesly velký nápor dat, přidal Google do své JavaScriptové knihovny (analytics.js) limit. Díky tomu se po překročení datové velikosti už neodešlou data žádná. Hraniční limit je 8192 bytů. Co to vlastně znamená, a jak se daná velikost dat počítá, si řekneme níže.

Jak se skládají data?

Zaběhnu teď trochu do hloubky webů. Jakmile si uživatel načte vaši stránku, tak se začnou z vašeho serveru stahovat data (HTML stránka). Prohlížeč si je přečte a zjistí, že má stáhnout nějaký JavaScriptový soubor analytics.js (hlavní řídící knihovna Universal Analytics). Stáhne ho a současně s tím, si přímo v HTML kódu té stažené stránky, přečetl, že má spustit nějaký jiný JavaScript. To je ten kus kódu, který vás vždy GA nutí vložit do hlavičky vašeho webu. Tenhle JavaScript nějakým způsobem reaguje s řídící knihovnou, co se stáhla. Ve výsledku posbírá všechna možná data a na pozadí udělá tzv. AJAXový request, kterým všechna posbíraná data odešle na server Google Analytics.

Request je ve své výsledné podobě jen obyčejná URL adresa a vypadá nějak takto:

Trochu to rozdělím. První část je samotná adresa serveru, kam se ta data posílají:

Pak následuje otazníček a za ním už jen sada parametrů a jejich hodnot:

URL je pořád poměrně nečitelná, zkusím to rozsekat na jednotlivé parametry:

Nyní je konečně trochu vidět, co se tam posílá, ale pořád to není ono. Je to tím, že URL je encodovaná. To je proces, kdy se z hezké normální URL, stanou ty divné paskvily plné procent s nesmyslnými písmeny a čísly. (%2F = /, %3A = :) Pokud URL dekóduji, vypadá nějak takto:

Teď už je URL bez problému čitelná a konečně vidíte, co se vlastně posílá. Parametr t (type) určuje, že posíláme typ hitu pageview. Parametr dl (document location) označuje celou URL stránky, parameter dp (document path) upřesuje konkrétní cestu stránky (to za lomítkem dál, ale včetně lomítka!), ul (user language) označuje nastavený jazyk mého prohlížeče atd.

Tím jsme si ukázali, kde se berou data, a jak se odesílají na server. Nezmínil jsem ale to nejdůležitější – velikost. Zpravidla platí jednoduché pravidlo – 1 znak = 1 byte. Posíláte-li si na vašem webu vlastní dimenze, imprese Enhanced Ecommerce, informace o detailu produktu, sečtěte si délku všech jejich znaků, názvů jejich parametrů a rovnítek (dl, t, dp, ul, …) a de facto to máte.

Pozor! Ten, kdo pozorně četl, si uvědomí ještě jednu věc. Takhle se to úplně počítat nedá. Vzpomeňte na enkodování URL. Co to znamená v praxi? Každý speciální znak (třeba lomítko „/“) najednou není jeden znak, ale rovnou tři znaky (%2F) a tedy i 3 byty. A to pořád není všechno. Chcete mít v GA hezká data s diakritikou? Takové „ě“ po enkodování vypadá takto: %C4%9B. Tedy dokonce 6 bytů.

Jak zjistit limit?

Cesty jsou dvě. Každá z nich má to svoje.

  1. Odchytit odchozí HTTP requesty a spočítat jejich počet znaků.
  2. Zastavit si GA ve chvíli odesílání a nechat si velikost vypsat.

Zjistit počet znaků

Tuto metodu osobně nedoporučuji, ale pro některé technicky méně znalé, může být jednodušší. Musíte si odchytit odchozí request a zjistit, kolik má výsledná URL znaků. Request si můžete odchytit pomocí různých pluginů nebo programů, ale také přímo v prohlížeči. Každý prohlížeč má tzv. vývojářské nástroje a má je implementované malinko jinak. V Google Chrome, IE a Edge je to klávesa F12. Firefox potřebuje zvláštní rozšíření Firebug. Pro jednoduchost použiji plugin do prohlížeče Live HTTP Headers. Ten je dostupný snad pro všechny prohlížeče a jeho ovládání je vcelku intuitivní.

Pomocí pluginu si načtete kompletní HTTP komunikaci vašeho webu a ve spleti různých URL adres najdete URL směřující na server www.google-analytics.com/collect.  Zde si zobrazíte její detail a zkopírujete její parametry. To následně vložíte do nějakého programu na počítání znaků. No a to je vše, máte velikost vašeho hitu.

Zjistit přímo bytovou velikost

Druhý způsob je metoda, která vyžaduje trochu více úsilí při prvním použití, ale ve výsledku je mnohem rychlejší. Ukážu vám, jak to dělám v prohlížeči Google Chrome, v ostatních prohlížečích, by to mělo být velmi podobné.

Začnete tím, že si otevřete vaši stránku a vývojářské nástroje, kde si překliknete na záložku sources. V mém případě otevírám www.medio.cz a vývojářské nástroje v Chromu = klávesa F12 + překlik na záložky Sources/Zdroje. Dále v levém sloupci všech scriptů otevřete adresář www.google-analytics.com a klinete na soubor analytics.js. V prostředním sloupci by se vám měl zobrazit jeho obsah. Toho se nemusíte děsit. Klikněte v levém dolním rohu prostředního sloupce na ikonku složených závorek, aby kód „zkrásněl“.

clanek_1

Pak klikněte kamkoliv do kódu a zmáčknete kombinaci kláves pro vyhledávání (Ctrl + F). Do vyhledávacího pole vepište 8192. Kód by vám měl přeskočit a vypadat cca takto (trochu se lišit může).

clanek_2

Najděte řádek, kde se porovnává číslo 8192 v nějaké podmínce (else if (8192 >= b.length)) a pak ho označte kliknutím na číslo řádku. U mě je to momentálně řádek 215. Pozor na to, že ta podmínka může mít časem trochu jiný tvar, vzhledem k tomu, že se kód Google Analytics aktualizuje. Udělejte reload stránky. Pokud se stránka načetla bez jakékoliv změny, znamená to patrně, že velikost vašich dat nedosahuje ani prvního limitu 2036 bytů, který je nastavený jen z určitých technických důvodů a nemusí vás nijak trápit. Takže můžete být úplně v klidu a nic neřešit.

Pokud se stránka zasekla a vyskočila na vás zpráva typu „Paused in debugger“, znamená to, že velikost vašich dat překročila první limit a JavaScript došel až k bodu, kdy velikost porovnává s druhým limitem. V takovém případě se právě zastavili na tzv. breakpointu, který jste před chvíli vytvořili kliknutím na číslo toho řádku. Abyste zjistili velikost dat, přepněte se do záložky console, kam napište to, s čím se porovnává hodnota 8192. V mém případě b.length a dejte enter. Ihned vám to vrátí číslo, což je skutečná datová velikost odesílaných dat.

clanek_3

Pokud se nad tím zamyslíte a trochu více si v tom pohrajete, tak zjistíte, že tento postup opět nedělá nic jiného, než že počítá znaky ve výsledné URL. Pro mě osobně je ale pohodlnější hlavně z toho důvodu, že pokud se chci podívat na další stránku, tak ji prostě otevřu a breakpoint stále funguje, takže nemusím znovu odchytávat requesty, hledat, kopírovat, atd. Navíc obvykle funguje i napříč weby, takže pokud nechcete sledovat limity GA i u konkurence, nezapomeňte na konci ten breakpoint zase vypnout – opět kliknutím na číslo řádku.

Znáte ještě nějaký další způsob? Podělte se s námi!

Zveřejněno 13.11.2015 v rubrice Analytika se štítky , , , .
heller

André Heller

André namíchává v Medio Interactive analytická řešení na míru všem. Jeho velikou vášní jsou zdrojové kódy a návrhy měření. Ve volném čase vyvíjí aplikace, učí se nové technologie a skáče na slackline.

Google+ profil @andheller heller@medio.cz

Komentáře k článku

[1] Petr Soukup | 16. 11. 2015 v 12.52

Možná jen nerozumím problému, ale proč nestačí jednoduše kouknout na Network panel, kolik se posílá dat?

[2] André Heller | 16. 11. 2015 v 13.10

[1] Petr Soukup – Protože je to poměrně nepřesné. Zkusil jsem si to teď schválně porovnat na jednom requestu a zatímco GA vidí a hlavně porovnávají velikost 478 bytů, kterou by při překročení ignorovaly, tak network mi ukazuje 386 bytů. A pokud je mým cílem to optimalizovat a využít z limitu tolik kolik půjde, nemohu si takové něpřesnosti dovolit.

Samozřejmě, pokud to chci vědět jen orientačně, tak to může být dostačující, ale to obvykle nepotřebuji. Orientačně mě zajímá, zdali se mi hit odeslal nebo ne.

[3] Tomáš Pilát | 17. 11. 2015 v 10.05

no není to teda pravda zrovna elegantní. Nezkoušeli jste si na tohle udělat vlastní plugin do prohlížeče?

[4] André Heller | 17. 11. 2015 v 13.09

Zkoušeli, ale pořád řešíme problém s detekcí. Ve chvíli, kdy ti ten hit odejde, tak je to v pořádku, ale ve chvíli, kdy se ten limit překročí a ten hit vůbec neodejde, tak je problém s detekcí toho, zda neodešel kvůli limitu nebo neodešel kvůli nějaké chybě.

[5] Petr | 24. 11. 2015 v 10.29

Zatím jsem tedy v klidu, nedosahuji ani prvních limitů :)
Chtělo by to ale lepší plugin aby se nemuselo tak složitě hledat.

[6] André Heller | 26. 11. 2015 v 10.30

Plugin se snažíme vyřešit, bohužel to nese řadu problémů. Jinak to, že se vám nezobrazuje nic může ještě znamenat, že jste na tom postupu udělal něco špatně. Pro absolutní ověření bych an vašem místě ještě zkusil vložit breakpoint na ten řádek, kde se porovnává první limit, tedy 2032. Je to cca o dva řádky výše než ten s tou podmínkou hlavního limitu.