Autor Zpráva
Jimmyk
Profil *
Ahoj, snažím se vytvořit vlastní statistiky pro svůj projekt. V podstatě to funguje podobně jako Google Analytics - vloží se JS kód, který volá PHP. Nyní potřebuji nějakým způsobem monitorovat dobu strávenou uživatelem na stránce a napadly mě tyto řešení:

1) Vytvořit JS interval, který se bude odesílat každou (1*1,3) sekundu příkaz o prodloužení v MySQL - dotaz zabírá velice malý čas, ale nedokáži si představit, co to způsobí při velkém počtu návštěv (asi nereálné).

2) To stejné jako 1. bod, ale hodnotu budu ukládat do Cookies pomocí JS a při návštěvě další stránky přiřadím k záznamu předchozí stránky (bohužel u stránky, kde uživatel opustí web, nezjistím dobu strávenou na stránce).

3) Kombinace 1) a 2) dobu posílat třeba každých 10 sekund pomocí JS a ukládat přesnou hodnotu, navštíví-li uživatel další stránku - tím budu mít alespoň přibližný čas doby strávené na stránce, kde uživatel opustí web.

Chtěl bych Vás poprosit o názory, co si myslíte o mém řešení? Děkuji :)
Joker
Profil
Jimmyk:
Ještě by šlo využít událost onunload (což asi nemusí být spolehlivé ve všech prohlížečích, ale nic nebude spolehlivé ve všech prohlížečích).
Jimmyk
Profil *
Děkuji za tip. Bohužel unload jsem zkoušel a z výsledků bylo vidět, že je to velice nespolehlivé, někdy prohlížeč ani nestihl zareagovat a hodnota se neodeslala.
anonymníí
Profil *
Jimmyk:
Nedá mi nezeptat se, co tě vede k znovuvynalézání kola. Proč nepoužiješ GAnalytics, které mají přesně funkčnost, kterou potřebuješ, navíc se vše odehrává na serverech s dostatečnou kapacitou, které jsou na to dimenzované?
Jimmyk
Profil *
Samozřejmě jsem prvně prošel API pro GA, abych si ušetřil spoustu práce, ale naškodu jsou v API mezery, které nevyhovují tomu, jak bych chtěl statistiky později zpracovávat pro můj projekt a ten je postaven z velké části na datech právě ze statistik, takže nemám jinou možnost. :( Cílem není rozhodně udělat lepší statistiky než jsou GA, jsem si vědom ,že na to nemám kapacity a prostředky. :)
anonymníí
Profil *
Jimmyk:
ale naškodu jsou v API mezery
Co konkrétně ti tam chybí? Nebylo by lépe tu mezeru dozaplnit, než dělat celé statistiky znovu, s horším výsledky a tak vůbec?
Bubák
Profil
Joker:
Ještě by šlo využít událost onunload
Nebude lepší použít onbeforeunload? To je ode mne otázka, na kterou neznám odpověď, ale teoreticky by bylo vhodnější použít onbeforeunload.
Jimmyk
Profil *
anonymníí:
Potřebuji zpracovávat adresy v sumárním stavu a mít je všechny uložené u sebe v DB, ale hlavní potíží je pozdější e-commerce část, kterou potřebuji mít svoji a dost špatně se později přiřazuje k záznamům k GA.
Str4wberry
Profil
Reakce na anonymníího:
Ehm, odkdy umí Google Analytics počítat čas strávený na stránce?


Reakce na Jimmyka:
Pokud se nestihne odeslání při již zmíněné kombinaci onunload + onbeforeunload, asi opravdu bude nutné v časovém intervalu posílat požadavky na server.

Ještě dodám, že pro přesnější výpočty je vhodné detekovat aktivní okno, protože počítat čas, kdy si stránku jen někdo rozklik k pozdějšímu čtení na pozadí nebo si během jejího prohlížení odskočil někam jinam, nechcete. Zároveň se nabízí detekovat i pohyby myši a klávesnice (pro případ, že by si člověk nechal stránku otevřenou, ale třeba odešel pryč) a po nějakém čase bez pohybu už čas nepočítat (to umí třeba nástroj Ifvisible.jsdemo).
anonymníí
Profil *
Str4wberry:
odkdy umí Google Analytics počítat čas strávený na stránce?
Těžko říct, ale umí počítat dobu návštěvy celého webu, tak i čas strávený na každé konkrétní stránce. S vhodným nastavením filtrů se dají dělat navíc docela zajímavé věci.

Samozřejmě, těžko bude filtrovat jednu konkrétní návštěvu, ale to nebude dělat ani tak. Potřebuje souhrnné chování návštěvníků, ne pitvat každého zvlášť.
Jimmyk
Profil *
Str4wberry:
Toho jsem se obával, ale asi to spíše znovu zkusím přes Vámi navrhovaný onunload + onbeforeunload, jelikož nemám dostatečný server, abych si mohl dovolit tak časté dotazování.

Detekci aktivity již monitoruji, zvolil jsem reaktivaci časové proměnné po použití scroll nebo kliknutí a později časy aktivity (interval < 15 minut, kdy se něco stalo) sčítám a vynechávám dobu bez aktivity, abych zabránil vynechání časové aktivity při opětovném navrácení k obsahu.

Děkuji Vám za pomoc!


anonymníí:
Samozřejmě, těžko bude filtrovat jednu konkrétní návštěvu, ale to nebude dělat ani tak.

Přesněji potřebuji trackovat konkrétní návštěvy (uživatele) po určité selekci, takže mi záleží na separování jednotlivých návštěv.
Str4wberry
Profil
Reakce na anonymníího:
Problém je, že GA (pokud je mi známo) měří dobu mezi načtením stránky A a načtením stránky B téhož webu.

• Tj. když na stránku A přijdu, budu si ji 30 minut číst a následně ji zavřu, tak GA nemá co spočítat.
• Když přijdu na stránku A, budu si ji číst 30 vteřin, kliknu na stránku B, tu ihned zavřu, tak mi GA napočítá 30 vteřin.

Pokud se takhle GA pořád chová, tak v něm najdete akorát značně invalidní data.

ale to nebude dělat ani tak. Potřebuje souhrnné chování návštěvníků, ne pitvat každého zvlášť.
Na základě čeho se domníváte, že nepotřebuje pitvat každého zvlášť? Mně spíš přijde, že je cílem pravý opak – mít přesná data o době strávené na stránce pro každého uživatele.


Reakce na Jimmyka:
K čemu přesně tu dobou strávenou na stránce chcete měřit?
anonymníí
Profil *
Str4wberry:
Tj. když na stránku A přijdu, budu si ji 30 minut číst a následně ji zavřu, tak GA nemá co spočítat.
Nevím, jak přesně to funguje, nicméně mám pocit, že průběžně pinguje. Že by mi chyběla data o poslední návštívené stránce (odchozí) se říct nedá. Mimochodem, když GA ví, že návštěvník ze stránky odešel, snadno dopočítá strávený čas i na té poslední stránce: čas odchodu - čas příchodu (obojí zná, odchod tedy +- doba pingu).

Když přijdu na stránku A, budu si ji číst 30 vteřin, kliknu na stránku B, tu ihned zavřu, tak mi GA napočítá 30 vteřin.
Ano, to je správně, ne? 30 + 0 = 30. Pokud GA vrátí 31, může to být buď <31 + >0, nebo 31 + 0, nebo 30 + CEIL(>0). Ta vteřina roli už nehraje, pokud je zaokrouhlováno na vteřiny a ani nevíme, jestli je ceilováno, floorováno nebo zaokrouhlováno a řád jsou vteřiny... sekundy :-)

Pokud se takhle GA pořád chová, tak v něm najdete akorát značně invalidní data.
Zkus to něčím podepřít. Myslím si, že pokud se tak choval v minulosti, dnes se tak nechová (data i dvoustránkových návštěv se mi zdají být dostatečně validní, navíc, u okamžitých opuštění, tzn. návštěv bez prokliku na druhou stranu webu, mám čas (pokud přijdu na stránku, strávím na ní X sekund a odejdu, je to okamžité opuštění a čas se počítá).

Na základě čeho se domníváte, že nepotřebuje pitvat každého zvlášť? Mně spíš přijde, že je cílem pravý opak – mít přesná data o době strávené na stránce pro každého uživatele.
Nedovedu si představit (spravuji několik GA účtů), že někdo bude pitvat nereprezentativní vzorek 1 návštěvníka, což je při počtu > X návštěv denně i nemožné. Podstatné je chování masy, nebo odchylky od tohoto chování, pročež tu masu potřebuji znát.
Jimmyk
Profil *
Str4wberry:
Jedná se o e-commerce projekt, kdy chci zkusit vytvářet model ideálního zákazníka a jedním z atributů je zjistit, co jej zajímá, tedy jaké kroky při jeho cestě ke konverzi v zákazníka podstoupí a co jej ovlivňuje, tedy čas strávený v dané části je velice důležitý, jelikož lze vyvozovat podle času, co jej zaujalo a co naopak přeskočil. Těchto atributů je více, co chci zkoumat, zatím nevím, zda model k něčemu bude, ale líbí se mi ta myšlenka, tak to chci zkusit. :)
Str4wberry
Profil
Reakce na anonymníího:
Nevím, jak přesně to funguje, nicméně mám pocit, že průběžně pinguje.
Nechal jsem teď schválně jednu stránku s GA přes oběd běžet v Google Chrome a v síťových přenosech se nic nového neobjevilo, takže to asi skutečně funguje pořád stejně. Tedy doba strávená na poslední stránce se neměří.

Nedovedu si představit (spravuji několik GA účtů), že někdo bude pitvat nereprezentativní vzorek 1 návštěvníka, což je při počtu > X návštěv denně i nemožné.
Stačí si představit projekt s malou návštěvností, kde žádná masa neexistuje a jediný návštěvník může výrazně zahýbat s čísly.
Joker
Profil
anonymníí:
Mimochodem, když GA ví, že návštěvník ze stránky odešel, snadno dopočítá strávený čas i na té poslední stránce: čas odchodu - čas příchodu (obojí zná, odchod tedy +- doba pingu).

Nemusí znát čas odchodu. Odchod se dá detekovat i tím, že návštěvník už nenačetl žádnou další stránku webu. (Nezkoumal jsem, jak to reálně GA dělá- ale je to jedna možnost)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: