Tout d'abord, je suis en désaccord avec les deux précédentes réponses-ni engage la question.
L'un pixel de l'image résout un problème intrinsèque de web analytics apps (comme Google Analytics) lorsque l'on travaille dans le Protocole HTTP--comment transférer (web metrics) des données du client vers le serveur.
La plus simple des méthodes décrites par le Protocole, le plus simple (au moins la méthode la plus simple qui comprend un corps de requête) est la requête GET. Selon ce Protocole de la méthode, les clients de lancer des requêtes à des serveurs pour les ressources, les serveurs de traitement de ces demandes et de retour des réponses appropriées.
Pour un web analytics app, comme GA, cette uni-directionnelle régime est une mauvaise nouvelle, car il ne semble pas permettre à un serveur pour récupérer des données à partir d'un client sur demande, encore une fois, tous les serveurs peuvent faire est de fournir des ressources à ne pas en faire la demande.
Alors quelle est la solution pour le problème de l'obtention des données du client vers le serveur? Dans le contexte HTTP il y a d'autres Protocole des méthodes autres que GET (par exemple, la POSTE), mais c'est une option limitée pour de nombreuses raisons (comme en témoignent ses rares et spécialisées telles que l'envoi des données du formulaire).
Si vous regardez une Requête GET à partir d'un navigateur, vous verrez qu'il est composé de l'URL de la Requête et en-Têtes de Requête (par exemple, le Referer et User-Agent en-Têtes), ce dernier contient des informations sur le client (par exemple, type et version de navigateur, langue du navigateur, système d'exploitation, etc.
Encore une fois, c'est la partie de la Demande que le client envoie au serveur. Donc l'idée qui motive l'un pixel gif est pour le client d'envoyer le web les données de mesures sur le serveur, le tout enveloppé dans un en-Tête de Requête.
Mais alors comment obtenir le client Demande une ressource de sorte qu'il peut être "trompé" en envoyant les données de mesures? Et comment obtenir le client à envoyer les données que le serveur veut?
Google Analytics est un bon exemple: l' ga.js fichier (le fichier de grande taille dont les télécharger vers le client est déclenchée par un petit script dans la page web) comprend quelques lignes de code qui dirige le client demande une ressource à partir d'un serveur en particulier (le GA serveur) et d'envoyer certaines données enveloppé dans l'Entête de la Requête.
Mais étant donné que le but de cette Demande est de ne pas obtenir effectivement une ressource, mais pour envoyer des données au serveur, cette ressource doit être une petite que possible et il ne doit pas être visible au moment du rendu de la page web--d'où la de 1 x 1 pixel gif transparent. La taille est la taille la plus petite possible, et le format (gif) est le plus petit parmi les formats d'image.
Plus précisément, tous les GA de données--chaque élément--est assemblé et emballé dans l' URL de la Demande de la chaîne de requête (tout ce qui est après le '?'). Mais pour que les données du client (où il est créé) à l'AG du serveur (où il est enregistré et agrégées) il doit y avoir une Requête HTTP, de sorte que le ga.js (google analytics script téléchargé, sauf s'il est mis en cache par le client, en tant que résultat d'une fonction appelée lors du chargement de la page) oriente le client pour assembler toutes les données de google analytics--par exemple, les cookies, l'emplacement de bar, des en-têtes de demande, etc.--concaténer dans une chaîne unique et l'ajouter comme une chaîne de requête de l'URL (*http://www.google-analytics.com/__utm.gif*?) et que devient l' URL de la Requête.
Il est facile de le prouver à l'aide de n'importe quel navigateur web qui a permet d'afficher la Requête HTTP de la page web affichée dans votre navigateur (par exemple, de Safari, de l'Inspecteur Web, Firefox/Chrome Firebug, etc.).
Par exemple, j'ai tapé dans l'url valide pour une entreprise de la page d'accueil de mon navigateur la barre d'adresse, ce qui a rendu cette page d'accueil et affiche dans mon navigateur (j'aurais pu choisir n'importe quel site web/la page qui utilise l'une des principales apps google analytics, google analytics, Omniture, Coremetrics, etc.)
Le navigateur que j'ai utilisé était de Safari, donc j'ai cliqué Développer dans la barre de menu, puis Afficher l'Inspecteur Web. Sur la ligne supérieure de l'Inspecteur Web, cliquez sur Ressources, cliquez sur l'utm.gif ressource de la liste de ressources indiqué sur la colonne de gauche, puis cliquez sur les en-Têtes onglet. Qui va vous montrer quelque chose comme ceci:
Request URL:http://www.google-analytics.com/__utm.gif?
utmwv=1&utmn=1520570865&
utmcs=UTF-8&
utmsr=1280x800&
utmsc=24-bit&
utmul=enus&
utmje=1&
utmfl=10.3%20r181&
Request Method:GET
Status Code:200 OK
Request Headers
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1
(KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
Response Headers
Cache-Control:private, no-cache, no-cache=Set-Cookie, proxy-revalidate
Content-Length:35
Content-Type:image/gif
Date:Wed, 06 Jul 2011 21:31:28 GMT
Les principaux points sont les suivants:
La Demande était en fait une demande
pour l'utm.gif comme en témoigne la
la première ligne ci-dessus: *Demande
URL:http://www.google-analytics.com/__utm.gif*.
Google Analytics paramètres sont clairement visibles dans la chaîne de requête
ajouté à l'URL de la Requête: par exemple,
utmsr GA est le nom de la variable de référence à l'écran du client
la résolution, pour moi, montre une valeur de
1280x800; utmfl est la variable
nom de la version de flash, qui a un
la valeur de 10,3, etc.
L' en-Tête de Réponseappelé
Le Type de contenu (envoyé par le serveur vers le client) confirme aussi
que la ressource demandée et
retourné a une 1x1 pixel gif:
Content-Type:image/gif
Ce schéma général pour le transfert de données entre un client et un serveur a été autour pour toujours; il pourrait très bien être une meilleure façon de le faire, mais c'est la seule façon que je connais (qui satisfait les contraintes imposées par un hébergé service d'analyse).