2010-01-17 2 views
12

Pourquoi Google Analytic demande-t-il un fichier GIF? Est-ce parce que le GIF donne accès à plus de données que JavaScript seul? Est-ce pour obtenir l'adresse IP de l'utilisateur?Pourquoi Google Analytic demande-t-il un fichier GIF?

+0

"Tous ceux que j'ai implémentés ont été uniquement JavaScript" alors pourquoi posez-vous cette question si elle n'utilise pas un gif? –

+2

@ Chacha102: le JavaScript d'Analytics fait une demande à une image GIF. –

+0

@ Chacha102: Chechl google's page à propos de la structure de demande de gif. http://code.google.com/intl/fr-FR/apis/analytics/docs/tracking/gaTrackingTroubleshooting.html#gifParameters – GmonC

Répondre

14

Même lorsque JavaScript est activé, l'analyse demande un fichier GIF. Si vous regardez les paramètres GET de l'image, il contient beaucoup d'informations sur le navigateur. Stuff comme utmsr=1280x1024 (la taille de l'écran). Le code Google a un list of parameters. Il utilise la demande d'image pour envoyer des informations sur le navigateur sans XMLHttpRequest. Maintenant, pour répondre à la question originale, Google fait probablement cela pour contourner les restrictions cross-domain XMLHttpRequest.

+2

Je crois que Google utilise une demande d'image simplement parce qu'il n'a pas besoin de recevoir d'informations, seulement envoyer. Une demande d'image est le moyen le plus léger de le faire. – mylesmg

16

Le javascript de Google doit transmettre les détails de votre page vue à leurs serveurs d'une certaine manière. Ajax ne peut pas être utilisé dans plusieurs domaines. La seule façon de soumettre les informations est de demander un fichier à un serveur Google, en transmettant les informations nécessaires dans la chaîne de requête. Pour faciliter cela, une forme de contenu doit être demandée en utilisant une balise HTML standard. Le moyen le plus simple de le faire sans impact sur la page est de charger un gif transparent 1x1. Notez que dans le cas du script Google (et autres), cette image n'est pas réellement ajoutée à la page. Il est simplement chargé via une instruction javascript

var img1 = new Image(); 
img1.src = 'http://path/to/file.gif?otherinfohere'; 

Ceci charge l'image sans l'ajouter à la page. Ces informations peuvent également être chargé à l'aide d'une balise de script comme ceci:

<script src="http://path/to/script.js?otherinfohere" type="text/javascript"><script> 

Cependant, les utilisateurs sont plus susceptibles d'avoir le javascript bloqué que les images, donc il est plus sûr de demander une image. Quant à savoir pourquoi ils utiliseraient un gif au lieu de dire, un jpg, un gif est plus sûr dans le cas où un navigateur voyous ajoute réellement l'image à la page. Il est peu probable que le gif transparent ait un impact négatif sur la mise en page, alors qu'un fichier jpg 1x1 laisserait un point de 1 pixel quelque part sur la page. Editer: Pour ajouter à mon commentaire sur les utilisateurs ayant bloqué javascript, une requête gif contenant des informations statiques peut être ajoutée à l'intérieur d'une balise noscript pour permettre le suivi de base même dans le cas où le javascript est désactivé. À ma connaissance, GA ne le fait pas, mais d'autres fournisseurs de services d'analyse Web le font.

12

http://www.perlmonks.org/?node_id=7974

Le GIF est le plus petit transperant 43 octets.

http://garethrees.org/2007/11/14/pngcrush/

Le plus petit transperant PNG-24 (qui ne peut être montré par les navigateurs plus anciens aussi) est 67 octets.

http://www.techsupportteam.org/forum/digital-imaging-photography/1892-worlds-smallest-valid-jpeg.html

Le plus petit (opaque) JPEG est 134 octets.

Le calcul est simple! Plus grande taille = plus de coûts.

+3

** 67 ** octets, pas 73 octets. Vous devez lire tout le chemin jusqu'à la fin pour la punchline! –

1
  1. vous pouvez utiliser le __utm.tracker gif sans javascript (avec l'aide du serveur)

  2. vous pouvez l'utiliser dans un message e-mail (avec l'aide de programmation avant d'envoyer l'e-mail)

  3. Urchin a été développé avant AJAX était populaire (2005)

Il n'a rien à voir avec le domaine croisé. Ils auraient pu utiliser JSONP pour ça.

+0

JSONP sert à obtenir des données et Google Analytics n'a besoin que de transmettre des données. – alex

+2

l'étiquette d'image est pour obtenir des données, et OH WAIT. vous pouvez mettre les paramètres querystring dans une requête JSONP de la même façon que pour une image ... et renvoyer un 204 –

Questions connexes