2010-11-13 3 views
15

Sto solo cercando di capire perché non hanno utilizzato un'API REST.Perché Google Analytics utilizza __utm.gif?

+1

possibile duplicato: http://stackoverflow.com/questions/1227417/google-analytics-and-the-utm-gif-file –

+3

Negativo. L'ho letto prima di pubblicare questo. QUESTO thread chiede solo se è necessario avere il .gif sul tuo server. Mi chiedevo perché lo usassero del tutto. – Jacksonkr

+4

d'accordo - chiedere a chi ha bisogno di servire l'immagine gif è una domanda diversa da quella di chiedere se è necessario essere serviti del tutto. Questo Q riguarda davvero se esiste un meccanismo migliore per trasferire i dati dal client al server. – doug

risposta

28

In REST, i client avviano richieste ai server per le risorse; i server elaborano tali richieste e restituiscono le risposte appropriate.

utm.gif non è coinvolto nel trasferimento dati da server a client, ma è invece coinvolto nello spostamento di dati nell'altra direzione.

Ovviamente REST ha metodi HTTP per il client per comunicare con i server (GET e POST) e in effetti, Google Analytics indirizza il browser del client a inviare tutti i dati di analisi ai server GA tramite una richiesta GET. Più precisamente, una richiesta GET è composta da un URL di richiesta e intestazioni di richieste (ad esempio intestazioni di Referer e User-Agent).

Tutti GA dati - ogni singolo articolo - è assemblato e confezionato in stringa di query il richiesta di URL (tutto dopo il '?'). Ma affinché i dati possano andare dal client (dove è stato creato) al server GA (dove è loggato e aggregato) deve esserci una richiesta HTTP, quindi il ga.js (script di google analytics che viene scaricato, a meno che non sia memorizzato nella cache, dal client, come risultato di una funzione chiamata al caricamento della pagina) indirizza il client a raccogliere tutti i dati di analisi, ad esempio cookie, barra di posizione, intestazioni di richiesta, ecc., concatenandolo in un'unica stringa e aggiungerlo come stringa di query a un URL (http://www.google-analytics.com/__utm.gif?) e che diventa l'URL di richiesta.

Ovviamente non può esistere una richiesta HTTP senza una risorsa; quindi la risorsa è il client che richiede dal server? Non ha bisogno di nulla dal server, invece vuole inviare informazioni al server. Quindi l'effettiva risorsa del server richiesta dal client è puramente pretextual - la risorsa non è nemmeno necessaria al cliente, è richiesta esclusivamente per conformarsi all'operatore del protocollo di trasmissione. Pertanto, ha senso rendere tale risorsa il più piccola e non invadente possibile, motivo per cui si tratta di un pixel trasparente 1 x 1 in formato gif. È la dimensione più piccola possibile e il formato di immagine meno denso (byte/pixel); Penso che sia un po 'più di 30 byte. Un'immagine 1 x 1 negli altri formati comuni (ad esempio, jpeg, png, tiff) è più grande.

Questo schema generale per il trasferimento di dati tra un client e un server è stato intorno per sempre; ci potrebbe benissimo essere un modo migliore per farlo, ma è l'unico modo che conosco (che soddisfi i vincoli imposti da un servizio di analisi ospitato).

(Google Analytics ha effettivamente due APIs-- "Data Export" and "Management" --che sono entrambi servizi Web RESTful.)

+2

Così stanno solo usando il GIF di essere in regola con il protocollo ? Stanno inviando tutti i loro dati via QS e non hanno bisogno di intestazioni di richiesta, quindi ancora non capisco :( PS- grazie per la spiegazione dettagliata – Jacksonkr

+1

No, lo scopo di utm.gif è questo: a js La piattaforma di analisi dei dati web richiede che i dati vengano trasferiti dal client al server. Una richiesta 'GET' era l'operatore scelto per quel trasferimento, il che significa che i dati devono essere inseriti nell'intestazione della richiesta GET. dal client al * server *, tuttavia, questo è l'unico modo in cui funziona, quindi il client deve richiedere una risorsa dal server affinché sia ​​una richiesta GET valida, quindi viene utilizzata una risorsa "falsa", questa piccola 1x1 immagine trasparente pixel – doug

+7

@doug, perché il server non può semplicemente restituire una stringa da 1 byte invece di una gif da 35 byte? –

7

È possibile utilizzare __utm.gif nei browser che non supportano JavaScript utilizzando il <noscript> tag (con un po 'di lavoro sul server), così come nei messaggi e-mail (con un po' di lavoro prima di inviare l'e-mail).

Come farai una richiesta REST in un messaggio di posta elettronica?

+0

se javascript è disabilitato, lo snippet javascript che inietta lo script google analytics attuale non può essere nemmeno eseguito. – Alan

+0

@Alan errato. Potresti richiedere __utf.gif con un tag immagine. Questo non richiede JavaScript. Non è necessario caricare gli script GA per effettuare una richiesta al proprio server –

+0

Il tag viene creato al volo e inserito da google analytics javascript. Non è qualcosa di preesistente nel markup – Alan