【前言】網站分析如何取得數據,其實有很多種方法。例如利用伺服器日誌數據,或是在客戶端裝一些監視軟體。頁面標記法網站分析取得資料的方法跟前二者都不一樣,但一經出生,就艷驚四座,迅速成為主流方法。我的部落格( http://www.chinawebanalytics.cn )實際上幾乎所有的主題都是基於頁面標記法的。今天的文章,帶朋友們一起再次了解什麼是頁面標記法的網站分析,以及我們日常所讀的Omniture Site Catalyst或是Google Analytics網站分析報告中的數據,都是怎麼被捕獲的。
因為在出差,所以能夠寫部落格的時間減少了。這篇文章是我正在猛力撰寫的關於網站分析基礎知識的書中摘取的一段。希望這本書明年能跟大家見面。
【正文】
談到網站分析的資料捕獲,大家應該先有一個預備知識,那就是頁面標記法網站分析和日誌法網站分析的根本原理是完全不同的。關於日誌法網站分析的原理,請大家看這篇文章:伺服器日誌法網站分析的原理及優缺點。先前有朋友在微博上留言,認為AWStats,Omniture,WebTrends都是日誌分析工具,只不過Omniture利用了asp方式,它們沒有不同。這個觀點是完全的誤解。實際上,這三個工具都各不相同。 AWStats是日誌分析工具,免費。 WebTrends最初也是純日誌分析工具,但後來增加了Page Tagging(頁面標記)的功能。而Omniture SiteCatalyst則一出生則是以Page Tagging為思路的工具,而且至今Omniture並無面向日誌分析的工具。
因此,今天話題我們只談頁面標記法(Page Tagging)的網站分析取得資料的原理。我們從一個遊戲說起。
什麼是頁面標記法
大家都玩過暴雪公司的遊戲StarCraft(星海爭霸世代)嗎?我可是這個遊戲的狂熱愛好者。蟲族的女王有一個特殊的能力,把一個寄生蟲(parasite)噴在敵人的某個行動單位的身上,這樣這個行動單位走到哪裡,他身邊的情況都能被虫族看的一清二楚,成為一個非常忠誠的間諜。
或者,大家都去過銀行,銀行裡放在四處的攝像頭,把我們的一舉一動其實都拍攝了下來,然後傳遞到儲存裝置中保存起來。
所以,不恰當的比喻,所謂的頁面標記,就像是“噴給”頁面的寄生蟲,或者是在頁面上安裝的攝像頭,把訪問者在頁面上的一舉一動都記錄下來,然後傳遞給相關的需要了解這個網站的組織或個人。
下圖表示了這個過程:
頁面標記如同圖中紅色的一小塊,其實是一段可以被瀏覽器執行的javaScript程式語句,放在頁面的HTML原始檔中。這樣,當頁面被下載到客戶端的瀏覽器的時候,這段頁面標記Javascript程式就會被執行,如同星海爭霸中的寄生蟲上身,或是攝影機被打開。
頁面標記的JavaScript程式碼被執行之後,就會如實的把訪客在頁面上的互動訪問行為不間斷的發送給這個頁面標記所對應的網站分析工具的伺服器,這與攝像頭把拍攝到的圖像傳送給圖像儲存伺服器是完全一樣的。網站分析工具伺服器收到數據後,會進一步處理這些數據,並且把數據翻譯成人們能夠閱讀和分析的圖形、表格以及數據文件,然後呈現在一個漂亮的用戶界面上。我們常用的Google Analytics就是這樣一種資料收集方法。
可以看到,頁面標記方法跟日誌方法有本質上的不同。
1.日誌方法是把日誌檔案中的資料取出來加以分析;而頁面標記則是需要人為的在頁面中增加一個小的“間諜單位”,也就是說,需要依賴一個第三方才能獲取資料。
2、因為這個額外增加的小小“間諜單位”,頁面標記方法需要修改頁面的HTML來源文件,而日誌方法不需要。
3.日誌方法是被動地等著你來處理數據,你不處理,數據就是一條條忠實而死板的記錄;而頁面標記法則是主動地發送數據,而且會自動把數據預處理好,等著你來分析。
講到這兒要說點兒歷史了。在互聯網的早期,網站的規模較小,結構也簡單,日誌方法獨霸天下,但是互聯網的發展太快了,網站的軟硬體系統和邏輯架構很快變得越來越複雜,用日誌方法需要克服的困難越來越多,實施的難度也倍增,人們需要找到更簡單的實現方法。隨著JavaScript的普及,SaaS(Software as a Service,軟體即服務)的出現,頁面標記方法應運而生,這個方法實施起來簡單,而且再也不需要去跟海量的日誌檔案記錄打交道,資料管理和處理的效率極大提升,很快就成為眾多站長的首選。正是因為存在諸如簡單易行、數據可讀性高、管理難度低等諸多優勢,頁面標記方法成為網站分析這門科學主流的數據獲取方法,我的博客也完全聚焦於這種方法,而不會詳細討論日誌方法。
興趣閱讀:監控程式碼和監測標籤的區別
在進行網站分析的具體實作活動中,我們常常把兩種不同的監測標記方法-監測程式碼(Tracking Code)和監測標籤(Tracking Tag)混用。但實際上它們是不同的事物,我們如果能夠把它們嚴格區分開,將有助於我們在溝通上進行更準確地溝通。
程式碼(Code)指能夠執行的程式中的語句,因此監測程式碼是指為監測目的而編寫的一段可執行的程式語句。最典型的監測程式碼就是我們在頁面中加入的Google Analytics的JavaScript監測程式碼。
標籤(Tag)指為辨識某個監測對象而加的標識,這個標識不是程序語句,不能夠被執行,但可以被程式辨識用來判斷監測對象的具體屬性。例如這樣一個: http://www.chinawebanalytics.cn/ ?utm_campaign=newbook&utm_source=tsinghua&utm_medium=PRess ,「?utm_campaign=newbook&utm_source=tsinghua&utm_medium=press」就是一個標籤。標籤同樣也可以是一段完整的URL。
簡單講,能執行的程序是監測程式碼,不能執行的是監測標籤。
頁面標記方法是如何運作的
我們已經了解了頁面標記方法的基本原理,現在我們要細緻學習頁面標記是如何能夠實現資料的收集、傳遞並最終呈現在我們面前的。了解這個過程,對於我們進行網站分析的具體監測實施很有幫助。
第1步,頁面監控程式碼被瀏覽器載入並執行
頁面標記方法能夠正常運作的前提是要在網站中需要監測的每個頁面中都加入一段JavaScript的監測程式碼。當使用者開啟這個頁面時,伺服器(或Cache)會回應使用者的請求,然後把頁面,連同監控程式碼一起傳遞給使用者的瀏覽器。當使用者的瀏覽器接收到監測程式碼,就會開始執行程式碼。
第2步,執行完整的監測程式碼
頁面上的監測程式碼執行後,並不能實現全部的監測功能,而是轉而向它所對應的網站分析工具的伺服器請求完整的監測程式碼。完整的監控程式碼語句量較大,因此被集合成一個.js檔案存放在網頁的外部。外部程式碼一旦收到頁面監控程式碼的請求,也會傳遞給瀏覽器,並被瀏覽器執行。這樣,完整的監測功能就能得以達成。
以我自己的這個部落格(CWA, 網站分析在中國, http://www.chinawebanalytics.cn )的GA監測為實例,在完整的監測程式碼執行過程中,會有幾件事情發生:
1. 探測客戶端的各種屬性,包括瀏覽器版本,作業系統版本,螢幕解析度等等,並且記錄下來頁面存取具體發生的時間,以及存取的來源(Traffic Source)等等。
2. 為這個使用者的這個瀏覽器建立一個cookie。什麼是cookie?請看這篇文章:捍衛Cookie-沒有Cookie,我們什麼都沒有了,以及這篇文章:JavaScript和Cookie對GA的影響有多大? 。如果不想看這兩篇文章,沒關係,簡單說cookie的作用是把用戶這次訪問這個網站的相關關鍵情況記錄下來,當下次這個用戶再瀏覽這個網站的時候,cookie中的記錄就會作為新的瀏覽記錄的參考,從而能夠讓網站分析工具判斷這次訪問是否是重複訪問,訪問者是不是新的訪問者,以及很多其他的重要數據。 cookie在頁面標記監控方法中是必須的,也就是說,如果瀏覽器停用了cookie,頁面標記方法就不能發生作用。想知道Google Analytics的cookie設置,請看這篇文章:網站分析測量、意義、不為人所知的(2)。
3. 如果之前已經為這個訪客的這個瀏覽器建立了cookie,那麼監控程式碼會把舊的cookie資料中需要更新的部分重寫,這樣保證每次cookie都記錄的是相應的存取行為的資料。
步驟3,傳送資料給網站分析工具的伺服器
當監測程式碼收集了全部的信息,這時候它會把相關的數據的傳回給網站分析工具的伺服器。傳送的方式並不是直接把資料發去(即不是用post方法,如果你不了解HTTP協定中的post和get方法,這個括號中的內容可以略過不看),而是透過向網站分析工具伺服器請求一個1×1像素的透明GIF影像來完成的(即仍然是用get方法,不懂同樣請略過)。看起來有有點奇怪對嗎?其實在發出這個1×1像素請求的時候,所有收集到的資料都作為這個請求的相關參數被一起發送給了分析工具的伺服器,這樣分析工具就能夠取得並儲存下來相關的資料。
第4步,網站分析工具伺服器記錄數據
網站分析工具伺服器收到了資料之後,會把這些資料存放在一個大的資料檔案中,這個資料檔案的記錄方式和我們前面講到的日誌檔案(Log File)非常相似,因此,這裡我們也就稱它為Log File,不過差別在於,這裡來的Log File裝著的不是網站分析工具伺服器自己的運作數據,而是被監控的網站的數據。
這個Log File檔案裡面的每一個資料行(一個資料條目)都包含了某一個頁面瀏覽(PageView)的很多信息,包括但不限於以下內容(以Google Analytics的Log File記錄檔為例):
1、 頁面造訪發生的日期和時間;
2、 造訪的頁面的標題;
3、訪客的來源(是從某個網站連結過來的,還是透過搜尋引擎,還是透過直接造訪等等);
4、 這個訪客造訪這個網站的次數;
5.訪客IP位址的地理位置;
6.訪客客戶端的屬性,例如作業系統、瀏覽器、螢幕解析度等
這些記錄一旦被計入到分析工具伺服器的日誌中,一次資料蒐集的工作就結束了。以下這個例子是Google Analytics伺服器中記錄的一行資料(請注意並非真實的資料):
123.121.215.51 www.chinawebanalytics.cn – [31/Jan/2010:20:45:26 -0600] "GET
/__utm.gif?utmwv=1&utmn=699988832&utmcs=utf-8&utmsr=1680×1050&utmsc=32-bit&utmul=enus&
utmje=1&utmfl=8.0&utmcn=1&utmdt=%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90%E5%9C
%A8%E4%B8%AD%E5%9B%BD%E2%80%94%E2%80%94%E4%BB%8E%E5%9F%BA%E7%A1%80
%E5%88%B0%E5%89%8D%E6%B2%BF&utmhid=2006742654&utmr=-
&utmp=/ HTTP/1.1" 200 35 " http://www.chinawebanalytics.cn/ " "Mozilla/5.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"
"__utma=453698521.699988832.235456888.235456888.235456888.1; __utmb=453698521;
__utmc=453698521;
__utmz=453698521.235456888.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"
上面的數據似乎雜亂無章,實際上還是能看出來一些端倪的。例如,能夠看到訪客的IP位址是123.121.215.51,造訪的網域是我的部落格www.chinawebanalytics.cn ,造訪發起的時間是2010年1月31日的晚上8點45分26秒。另外,如果你耐著性子往後看,你還能看到訪客所使用的作業系統和瀏覽器的資訊。
關於utma,utmb,utmc和utmz都代表什麼,大家看這篇文章就明白了:網站分析度量、意義以及不為人所知的(2)。
第5步,網站分析工具處理數據
資料一旦被記錄到網站分析工具伺服器的Log File中,管線就要繼續往下走了。下一個環節是處理這些Log File的中的記錄行,每個記錄行都包含了具體的資料元素,稱為欄位(field),例如訪客IP、存取時間、瀏覽器及其版本等;這些資料元素會被分別打散,然後存入相應的欄位中,成為我們最終查看資料的「半成品」。
接著,資料半成品會進一步被網站分析工具中人為設定的標準篩選,篩選不過的資料欄位會被排除掉,剩下的資料會被進一步安排在為產生報表而準備的專案中。所有的這些數據都存放在網站分析工具的專門資料庫中,隨時等待被提取使用。
第6步,產生報告
當資料都處理完,整個過程也接近尾聲。如果使用者使用網站分析工具請求某個特定報告,資料欄位就會按照預先定義(或是使用者自訂)的格式組織被進一步計算、組織、然後被安排在為產生報告而準備的專案中。這個過程我們看不到,但是卻蘊含著一個網站分析工具演算法的精妙,並且,演算法的定義也影響了一些網站分析基本度量的定義,從而直接影響基本度量的實際值的輸出。這也是造成不同網站分析工具統計同一網站卻帶來不同價值的重要原因。
隨後,準備好的資料項目被進一步前推,推送到網站工具的UI(User Interface,使用者介面)的伺服器中產生具體的圖、表和數字,然後被進一步輸出到使用者的瀏覽器或客戶端上,成為我們能夠輕易讀懂的報告。
整個過程其實不算複雜,但網站分析工具會面對大量的資料處理,尤其是當一個網站的流量特別大的時候,網站分析工具會承受很大的負荷。這也是為什麼許多網頁標記型的網站分析工具會依照被監測網站的流量大小計取費用的原因。
利用頁面標記法進行網站分析的優點
頁面標記法有許多優點,使之能成為主流的網站分析取得資料的方法。
1. 不怕快取(Cache)影響
與日誌方法害怕快取的影響相反,頁面標記法一點也不用擔心快取的問題。因為頁面標記的程式碼是放在頁面原始檔中的,即使頁面被代理伺服器快取或是客戶端的瀏覽器快取保存下來,頁面標記的程式碼也會跟著被儲存,並且在瀏覽器載入頁面的時候一道被執行。
因此,如果你先後連續進入了一個網站的幾個頁面,然後又點擊瀏覽器的「後退」按鈕回到上一個頁面,那麼在頁面標記方法下,回到上一個頁面的行為會增加這個頁面一個「頁面瀏覽」;但是在log file方法下則可能因為快取的影響而不會記錄一次新的頁面瀏覽。這樣,頁面標記方法能夠記錄訪客更準確的訪問過程(visitor journey)。
2. 能夠記錄“客戶端互動”
前面已經講過,頁面標記法是在客戶端執行JavaScript程式碼實現的,因此,理論上,被瀏覽器開啟的頁面上的「一舉一動」都能被記錄下來。對於「客戶端互動」類型的Flash、JavaScript或其他的web2.0應用,頁面標記法同樣可以為這些應用程式的各種互動加上標記,然後準確記錄這些互動發生的情況。
由於網頁變得越來越互動,頁面標記法的優勢就會變得非常明顯,而且,已經有很多採用頁面標記法的工具是直接服務於頁面上的客戶端交互的,這說明客戶端交互監測需求不再是可有可無,而是成為衡量網站績效的重要組成部分。
3. 相對準確的訪客(visitor)記錄
頁面標記法依賴cookie記錄和辨識訪客的信息,也有些頁面標記法的工具利用cookie和IP共同辨識訪客訊息,而日誌方法則只依賴特定的IP位址。
要強調的是,利用cookie方法來辨識訪客資訊同樣不可能做到100%的準確(事實上完美是不存在的,史蒂芬霍金說過,百分之百完美在宇宙中不存在,若不如此,宇宙就不會存在),但是相較於僅依賴IP位址,cookie畢竟增加了一種辨識機制,而且這種機制與客戶端的瀏覽器捆綁且存入了更多的識別信息,因此利用cookie記錄的訪客記錄肯定要比IP訪客數準確。公允的說,在找到新的方法之前(這種方法目前還沒聽說),採用cookie技術的頁面標記方法能夠提供目前最準確的訪客資料。
此外,頁面標記法不受到機器人或蜘蛛等為爬取網站資料而造訪網站的影響,因此,排除惡意作弊的情況,幾乎可以認為這種方法記錄的全部是「人」造訪網站的資料。尤其是對於我自己的部落格這種非商業性的網站而言,我並不太關心機器人對我網站的爬取。不過如果你對SEO有非常進階的需求,那麼你應該利用日誌分析軟體來查看搜尋引擎機器人的網站。
4. 更好的即時性
同日誌法一樣,頁面標記法也是即時採集資料的。存取行為發生了,觸發(trigger)了頁面上的標記,然後資料隨即被擷取並傳送至工具的伺服器。但與日誌方法不同的是,日誌方法的資料處理不是即時的,而頁面標記方法的資料被傳送至工具的伺服器後,即在短時間內(甚至是即時地)被處理,並進而形成報告。因此,頁面標記方法有相當不錯的即時性。例如,Omniture的SiteCatalyst的數據報告僅僅只有幾個小時的延時;過去,Google Analytics有一到兩天的延時,現在也大約只有幾個小時,這樣的數據延遲對分析影響不大,已經可以近似認為是實時的了。
5. 不再存在的資料儲存與傳輸問題
與日誌方法需要保存大量的日誌檔案不同,只要你願意,頁面標記法的資料可以全部存放在網站分析工具提供者的伺服器(工具伺服器)上,這意味著你額外添置日誌儲存裝置的硬體成本和管理日誌檔案的軟體成本都不存在了。此外,還被省去的一個麻煩是把日誌檔案輸入到日誌檔案分析軟體中的工作,有些時候,這個工作並不像用滑鼠在工具的匯入介面中點選一個檔案那麼簡單,而是要開發專門的程序。另外,當有鏡像伺服器等狀況的時候,頁面標記法其實可以毫不在乎,但日誌方法在合併資料上就不那麼簡單了。
好了,這週的功課交給大家了,現在輪到大家了。我真的很希望看到您的留言和意見。祝大家有個愉快的新的一週!
作者:宋星
文章來源: http://www.chinawebanalytics.cn/pag-tagging-data-acquire/