Sto solo cercando di capire perché non hanno utilizzato un'API REST.Perché Google Analytics utilizza __utm.gif?
risposta
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.)
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
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
@doug, perché il server non può semplicemente restituire una stringa da 1 byte invece di una gif da 35 byte? –
È 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?
se javascript è disabilitato, lo snippet javascript che inietta lo script google analytics attuale non può essere nemmeno eseguito. – Alan
@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 –
Il tag viene creato al volo e inserito da google analytics javascript. Non è qualcosa di preesistente nel markup – Alan
possibile duplicato: http://stackoverflow.com/questions/1227417/google-analytics-and-the-utm-gif-file –
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
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