97免费在线观看视频 I 午夜夫妻视频 I 久久久久久网站 I 天堂网男人 I 欧美大波大乳人奶 I 丝袜 中出 制服 人妻 美腿 I 窝窝午夜理论片影院 I 日韩在线伦理电影 I 韩国特级毛片 I 亚洲欧美另类激情 I 在线成人日韩 I 麻豆视频免费看 I 黄色生活毛片 I 极品一线天小嫩嫩真紧 I 色久天堂 I 久久久久久黄色片 I 林智妍三级露全乳电影视频 I 大肉大捧一进一出好爽视频 I 空乘伦理hd I 少妇口述与子做过爱 I 成人免费影片 I 国产精品国内免费一区二区三区 I 日韩制服一区 I 青青草福利在线 I 日本在线观看不卡视频 I 婷婷六月综合亚洲 I 国产又粗又黄又硬 I 美女扒开屁股让男子桶爽 I 欧美性午夜视频观看 I 欧美狠狠插 I 亚洲福利在线观看视频 I 无码抽搐高潮喷水流白浆 I 亚洲欧美国产日韩色伦 I 你懂的视频网站在线观看 I www.蜜桃视频在线观看 I 日本无码人妻精品一区二区蜜桃 I 久久中文字幕人妻丝袜 I 碰草在线视频 I 日韩精品成人av网站

基于前端的 A/B 測試上的實踐問題

2012/3/26 14:43:11   閱讀:2598    發布者:2598

基于前端的 A/B 測試則可以解決上面的問題。它的特點是,利用前端 JavaScript 方法,在客戶端進行分流,同時,可以用 JavaScript 記錄下用戶的鼠標行為(甚至鍵盤行為,如果需要的話),直接發送到對應的打點服務器記錄。這樣的好處是不需要技術部(如果你們和我們一樣,前端工程師與后端工程師分屬不同部門的話)參與,并且可以比較精確地記錄下用戶在頁面上的每一個行為,甚至包括后端方法難以記錄到的無效點擊!

下面,我將重點介紹一下我們在基于前端的 A/B 測試上的一些實踐。

一、分流

首先遇到的問題是如何分流的問題。對于大部分需求來說,我們希望各個版本的訪問人數平均分配。解決辦法有很多種,比較簡單的一種即是前面提到過的,根據某一個 Cookie ID 來劃分用戶,前提是你的網站上每一位訪客在第一次訪問時就要有一個不重復的 Cookie ID,比如“123.180.140.*.1267882109577.3”。然后,可以根據這個 Cookie ID 的最后一位(在本例中是“3”)來劃分人群,比如單數的顯示 A 版本,偶數的顯示 B 版本。

因為 Cookie ID 一般設定后不會輕易改變,基于 Cookie ID 的好處是我們能很好地對訪客保持一致性,某個用戶如果第一次看到的是 A 版本,那他刷新后看到的還是 A 版本,不會一會兒看到 A 版本一會兒看到 B 版本。但不足之處就是如果用戶瀏覽器不支持 Cookie 的話,分流就不能正常進行了。不過,現代瀏覽器默認情況下都是支持 Cookie 的,如果真有用戶的瀏覽器不支持 Cookie ,那也應該是極少數特殊情況,對結果的影響非常微小,對于這些特殊情況,我們一般可以安全地忽略掉。

還有一點需要注意的是,A/B 測試的頁面必須有較高的 UV (Unique Visitor,獨立訪客數),因為分流帶有一定的隨機性,如果頁面 UV 太小,分到每一個版本的人數就更少,結果很有可能被一些偶然因素影響。而 UV 較大時,根據大數定理,我們得到的結果會接近于真實數據。就像想知道一個地方的成年人的平均身高,當然是取的樣本越大結論越可信。

二、展示

決定向當前訪問者顯示哪個版本后,怎么用前端的方法加載對應的版本呢?這需要分情況處理。

一般情況下,如果兩個版本只有一個較小的區域不一樣,我們可以同時將兩個區域的 HTML 都加載到當前頁面中,先用 CSS 把它們隱藏起來(也可以默認顯示一個版本),等 JS 判斷出該顯示哪個版本后,再控制對應版本的 CSS 顯示。

有時候,測試區域比較大,代碼比較多,或者需要后臺較多的計算資源,如果一開始就把兩個版本的 HTML 全加載到當前頁面中,就會需要比較大的開銷(比如帶寬、后臺計算量)。這種情況下,我們可以先把測試區留空,之后再用 Ajax 的方式延遲加載。

還有的時候,測試區域非常大,幾乎占了整個頁面,或者完全就是不同的頁面,這時,用 Ajax 方式加載也不適合了,可以將不同的版本做成不同的頁面,然后再用 JS 跳轉。不過這樣的方式并不是很好,因為前端 JS 跳轉需要一定的時間,這個過程很有可能被用戶感受到,并且留下不好的體驗。對這個問題,似乎沒有很好的解決辦法,至少在前端層面很難完美解決,所以并不是非常推薦這種跳轉方式,如果真的需要跳轉,最好是在服務器端由后端代碼來操作。

三、數據采集

正確展示對應的版本后,就要開始采集需要的數據了。有一個可選的數據,是當前版本有多少 PV (Page Views,訪問量),如果需要記錄這個數據的話,在正確版本加載完成之時就要發送一個打點信息。不過很多需求中,具體版本的 PV 的精確數值可能不是很重要,而且要收集這個信息需要多一次打點操作,所以一般情況下這個數據是可選的。

必須的數據是測試區域內用戶的點擊信息。當用戶在測試區域點擊了鼠標左鍵(無論這個點擊是點擊在鏈接、文字、圖片還是空白處),我們就需要發送一條對應的打點信息到打點服務器。一般來說,這個打點信息至少需要包含以下數據:

當前 A/B 測試以及版本標識

點擊事件的位置

點擊時間戳(客戶端時間)

當前點中的URL(如果點在非超鏈接區域,此項為空)

用戶標識(比如 Cookie ID)

用戶瀏覽器信息

為了盡可能精確地還原用戶的點擊位置,我們的頁面對前端有比較高的要求,要求頁面在不同的瀏覽器下有基本一致的表現,至少在IE6、7、8以及 Fiefox 下,頁面橫向的元素要精確一致,縱向上很難做到完全一致,但也要盡可能保持統一。另外,這樣的測試也不太適合自適應寬度的頁面,比較適合定寬的頁面,為了避免不同分辨率下頁面左右空白不同導致鼠標點擊位置的不同,點擊位置取的應該是相對于測試區域左上角的位置。除此之外,最好再記錄一下測試區域相對于頁面內容左上角的位置,在后面還原點擊分布圖以及繪制熱區圖時會用到這個數據。

四、數據存儲

我們使用了一臺專用的服務器收集打點信息,為了能支持盡可多盡可能密集的打點請求,這臺服務器的 apache 服務網站目錄下只有兩個靜態文件,分別是 abtest.html 和 abtest.gif ,兩者都是非常小的空白文件(空白圖片)。訪客端進行打點時,只需要以 GET 的方式帶上相關的參數請求兩個文件中的任意一個即可。比如:http://yanet22.blog.163.com/
這個請求可以通過 Ajax 的方式發送,也可以通過 JS 在頁面上創建 new Image() 對象的方式完成。

對打點服務器來說,這只是一條普通的 HTTP 請求,它會在日志里留下一條普通的日志記錄,形如:

123.180.140.* – - [13/Jan/2010:15:21:15 +0800] “GET /abtest.gif?a=123&b=456&c=789 HTTP/1.1″ 304 – “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.6 (KHTML, like Gecko) Chrome/4.0.266.0 Safari/532.6″

可以看到了,除了 JS 發送給我們的信息外,Apache 還幫我們記錄了一些信息,比如訪客 IP 、服務器時間、用戶瀏覽器信息。

對于數據記錄和存儲來說,到這一步就足夠了。Apache 靜態文件 + 日志的方式足夠高效,基本不用擔心性能的問題。剩下的,就是另外一個問題,如何從 Apache 日志中讀取打點信息并加以分析,這已經和前端無關了,并且是一個比較復雜的問題,將在后續日志中介紹。

主站蜘蛛池模板: 国产av激情久久无码天堂 | 国产尤物av一区二区三区 | 中文字幕一区二区三区日韩精品 | www.日本黄色 | 五月天久久 | 国产一区二区三区 韩国女主播 | 激情中文小说区图片区 | 亚洲国产精品久久久久久久 | 装睡被陌生人摸出水好爽 | 999国产精品999久久久久久 | 日韩大陆欧美高清视频区 | 国产精品扒开腿做爽爽爽a片唱戏 | 日韩不卡毛片 | 黄色av地址 | 国内精品bbw国语对白 | 搡少妇在线视频中文字幕 | 国产精品呻吟久久人妻无吗 | 激性欧美激情在线 | 日本嫩草影院 | 国产激情精品视频 | 国产91色在线 | 日韩 | 亚洲色偷偷色噜噜狠狠99网 | 巨大黑人极品videos精品 | 色先锋av资源中文字幕 | 久艹在线观看 | 国产精品福利视频主播真会玩 | 欧美视频自拍 | 黄色一级片在线播放 | 国产精品久久这里只有精品 | 天天干天天天 | 99久久婷婷国产综合精品青牛牛 | 中文字幕在线视频一区二区三区 | 中文字幕人妻丝袜乱一区三区 | 欧美巨大丰满少妇xxxx人 | 漂亮人妻被强中文字幕久久 | 国产粉嫩嫩bbb | 国产激情综合在线观看 | 午夜色影院| 亚洲欧美日韩综合在线丁香 | 免费观看18禁无遮挡真人网站 | 精品国产电影久久九九 | av免费播放一区二区三区 | 久久天堂综合亚洲伊人hd妓女 | 欧美高清一区二区 | 亚洲九九香蕉 | 男人天堂av网 | 欧美成人精品欧美一级乱 | 亚洲狠狠操 | 日本免费黄色小视频 | 丁香色综合 | 性一交一无一伦一精一品 | 丰满熟妇乱又伦在线无码视频 | 果冻传媒亚洲区二期 | 欧美性xxxxx极品少妇 | 美女张开腿给男人桶爽久久 | 蜜臀av在线无码国产 | 精品视频在线看 | 亚洲国产精品一区二区第一页 | 国产乱码精品一区二区三 | 国产又大又硬又粗 | 国语对白少妇spa私密按摩 | 精品国产精品国产自在久国产 | 久久99热精品免费观看牛牛 | 亚洲精品国产一区二区图片 | 免费啪啪小视频 | 国产男女视频在线观看 | 午夜精品导航 | 青青操在线 | 中文字幕精品亚洲 | 久久精品人人爽人人爽 | 欧美在线xxx | 婷婷成人综合网 | 在线 | 国产精品99传媒a | 欧美视频一区二区三区四区 | 国产亚洲欧美日韩二三线 | 青青草原精品资源站久久 | 国产尤物人成免费观看 | 精品国产第一页 | 欧美激情不卡 | 免费人成网站在线观看欧美高清 | 国产偷久久 | 韩国理伦片一区二区三区在线播放 | 狠狠五月天 | 在线播放亚洲精品 | 亚洲国产精品成人av在线 | 精品国产乱码久久久久久闺蜜 | 性强烈的欧美三级视频 | 操一操av| 国内大量揄拍人妻精品视频 | 久久久久久久av麻豆果冻 | 久久精品国产只有精品96 | 亚洲欧美尹人综合网站 | 理论片午午伦夜理片久久 | 亚洲精品久久av无码麻 | 天天操天天射天天插 | 五月综合激情日本mⅴ | 四虎影院在线观看av | 久久午夜色播影院 | 99精品国产综合久久久久五月天 |