Birincisi, önceki iki cevaba katılmıyorum - ne soruyu meşgul etmiyor.
Tek piksellik görüntü, HTTP Protokolünde çalışırken (web ölçümleri) verilerin istemciden sunucuya nasıl aktarılacağı gibi web tabanlı analiz uygulamaları (Google Analytics gibi) için içsel bir sorunu çözer .
Protokol tarafından açıklanan yöntemlerin en basiti, en basit olanı (en azından bir istek gövdesi içeren en basit yöntem) GET isteğidir . Bu Protokol yöntemine göre, istemciler sunuculara kaynaklar için istekler başlatır; sunucular bu istekleri işler ve uygun yanıtları döndürür.
GA gibi web tabanlı bir analiz uygulaması için bu tek yönlü şema kötü bir haberdir, çünkü bir sunucunun talep üzerine bir istemciden veri almasına izin vermez - yine, tüm sunucuların yapabileceği şey, onları isteyin.
Öyleyse istemciden sunucuya geri veri alma sorununun çözümü nedir? HTTP bağlamında, GET dışında başka Protokol yöntemleri de vardır (örneğin, POST), ancak bu, birçok nedenden dolayı sınırlı bir seçenektir (form verilerini göndermek gibi seyrek ve özel kullanımıyla kanıtlandığı üzere).
Bir tarayıcıdan bir GET İsteğine bakarsanız, bunun bir İstek URL'sinden ve İstek Başlığından (örneğin, Yönlendiren ve Kullanıcı-Aracı Başlıkları) oluştuğunu görürsünüz ; ikincisi, istemci hakkında bilgiler içerir - ör. Tarayıcı türü ve sürüm, tarayıcı dili, işletim sistemi vb.
Yine, bu, istemcinin sunucuya gönderdiği İsteğin bir parçasıdır. Dolayısıyla , tek pikselli gif'i motive eden fikir, istemcinin web ölçüm verilerini sunucuya bir İstek Başlığı içine sarılmış olarak göndermesidir.
Ama sonra , müşterinin metrik verilerini gönderirken "kandırılabilmesi" için bir kaynak talep etmesini nasıl sağlayabilirim? Ve istemcinin sunucunun istediği gerçek verileri göndermesini nasıl sağlayabilirim?
Google Analytics iyi bir örnektir: ga.js dosyası (istemciye indirilmesi web sayfasındaki küçük bir komut dosyası tarafından tetiklenen büyük dosya) , istemciyi belirli bir kaynaktan belirli bir kaynak istemeye yönlendiren birkaç satır kod içerir. sunucu (GA sunucusu) ve İstek Başlığına sarılmış belirli verileri göndermek için.
Ancak bu İsteğin amacı aslında bir kaynak elde etmek değil, sunucuya veri göndermek olduğundan, bu kaynak olabildiğince küçük olmalı ve web sayfasında görüntülendiğinde görünmemelidir - dolayısıyla 1 x 1 piksel şeffaf gif. Boyut, mümkün olan en küçük boyuttur ve biçim (gif), görüntü biçimleri arasında en küçük olanıdır.
Daha doğrusu, tüm GA verileri - her bir öğe - toplanır ve İstek URL'sinin sorgu dizesine ("?" İşaretinden sonraki her şey) paketlenir . Ancak, bu verilerin istemciden (oluşturulduğu yer) GA sunucusuna (günlüğe kaydedildiği ve toplandığı yer) gitmesi için bir HTTP İsteği olması gerekir, bu nedenle ga.js (google analytics komut dosyası indirilirse İstemci tarafından önbelleğe alınan, sayfa yüklendiğinde çağrılan bir işlevin sonucu olarak) istemciyi tüm analitik verilerini bir araya getirmeye yönlendirir - örneğin tanımlama bilgileri, konum çubuğu, istek başlıkları vb. - bunu tek bir dizede birleştirin ve bunu bir URL'ye sorgu dizesi olarak ekleyin ( * http: //www.google-analytics.com/__utm.gif* ?) ve bu, İstek URL'si olur .
Tarayıcınızda görüntülenen web sayfası için HTTP İsteğini görüntülemenizi sağlayan herhangi bir web tarayıcısını kullanarak bunu kanıtlamak kolaydır (örn., Safari'nin Web Denetçisi , Firefox / Chrome Firebug , vb.).
Örneğin, bir kurumsal ana sayfaya geçerli bir url'yi tarayıcımın konum çubuğuna yazdım ve bu ana sayfayı döndürdüm ve tarayıcımda görüntüledim (ana analitik uygulamalarından birini (GA) kullanan herhangi bir web sitesini / sayfasını seçebilirdim. , Omniture, Coremetrics vb.)
Kullandığım tarayıcı Safari idi, bu yüzden menü çubuğunda Geliştir'i ve ardından Web Denetçisini Göster'i tıkladım . Web Denetçisi'nin en üst satırında Kaynaklar'a tıklayın, sol sütunda gösterilen kaynaklar listesinden utm.gif kaynağını bulup tıklayın, ardından Başlıklar sekmesine tıklayın. Bu size şöyle bir şey gösterecek:
Request URL:http:
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
Dikkat edilmesi gereken temel noktalar şunlardır:
Yukarıdaki ilk satırda gösterildiği gibi, İstek aslında utm.gif için bir istektir: * İstek URL'si: http: //www.google-analytics.com/__utm.gif*.
Google Analytics parametreleri, İstek URL'sine eklenen sorgu dizesinde açıkça görülebilir : örneğin,
utmsr , GA'nın istemci ekran çözünürlüğüne atıfta bulunan değişken adıdır, benim için 1280x800 değerini gösterir; utmfl , 10.3 vb. bir değere sahip flash sürümünün değişken adıdır.
Tepki Başlık denilen
Content-Type : (istemci sunucu arka tarafından gönderilen) kaynak istenen ve döndürülen 1x1 piksel gif olduğunu da doğruladı
Content-Type: image / gif
Bir istemci ile bir sunucu arasında veri aktarımı için bu genel şema, sonsuza kadar sürdü; bunu yapmanın daha iyi bir yolu olabilir, ancak bildiğim tek yol bu (barındırılan bir analitik hizmetinin getirdiği kısıtlamaları tatmin eden).