前端數據收集(pv/uv)

所謂web,即便你我素未謀面,便知志趣相投;足不出戶,亦知世界大。node

01 — 什麼是PV/UV

網站流量分析,是指在得到網站訪問量基本數據的狀況下對有關數據進行統計、分析,從中發現用戶訪問網站的規律,並將這些規律與網絡營銷策略等相結合,從而發現目前網絡營銷活動中可能存在的問題,併爲進一步修正或從新制定網絡營銷策略提供依據。這是來自網絡營銷管理的角度來考慮的。git

既然是流量分析,要分析就要有數據,這些數據來自哪裏?這就涉及到經常使用的網站流量分析的指標:PV/UV。github

  • 1.什麼是pv?

    PV(page view),即頁面瀏覽量,或點擊量;一般是衡量一個網站的主要指標。web

    高手對pv的解釋是,一個訪問者在24小時(0點到24點)內到底看了你網站幾個頁面。這裏須要強調:同 一我的瀏覽你網站同一個頁面,不重複計算pv量,點100次也算1次。說白了,pv就是一個訪問者打開了你的幾個頁面。後端

    PV之於網站,就像收視率之於電視,從某種程度上已成爲投資者衡量商業網站表現的最重要尺度。瀏覽器

  • 2.什麼是uv?

    uv(unique visitor),指訪問某個站點不一樣IP地址的數量。固然這是基於ip的統計解釋。網絡

    在同一天內,uv只記錄第一次進入網站的具備獨立IP的訪問者,在同一天內再次訪問該網站則不計數。獨立IP訪問者提供了必定時間內不一樣用戶數量的統計指標,而沒有反應出網站的全面活動。socket

02 — 如何統計PV/UV

對pv/uv有了字面上的認識,那就但是使用必定的策略來收集這些數據,先來講說pv,pv既然是基於頁面的,對於大多數網頁來講,每個頁面都會有一個對應的地址(url),咱們須要作的即是去檢測這個頁面地址的變化,只有當頁面地址變化了,這個時候咱們認爲用戶離開了當前頁面,跳轉到其餘頁面了。咱們放上代碼看看:函數

//監聽頁面變化
(function (window) {
// 若是瀏覽器原生支持該事件,則退出  
  var location = window.location,
  oldURL = location.href,
  oldHash = location.hash;
  // 每隔100ms檢測一下location.hash是否發生變化
  setInterval(function () {
    var newURL = location.href,
    newHash = location.hash;
  // 若是hash發生了變化,且綁定了處理函數...
  if (newHash != oldHash) {
      oldURL = newURL;
      oldHash = newHash;
      uploadUserData(4, null);
  }
 }, 500);
})(window);

而後當咱們上傳這些數據到後端的時候,咱們須要去記錄每個頁面地址所對應的ip,這樣才能算出網站的pv數量。學習

咱們繼續來看如何收集uv,既然uv和用戶ip有關,那麼咱們就須要去拿到訪問者的ip地址。那問題來了,用戶的ip地址從哪裏獲取呢?熟悉web的同窗一會兒就聯想到http請求了。是的,咱們的每個客戶端請求都會攜帶用戶端的信息,這些信息都會在請求頭裏面。如今咱們直接看項目實現:

function getClientIP(req) {
  var ip = req.headers['x-forwarded-for'] ||
  req.ip ||
  req.connection.remoteAddress ||
  req.socket.remoteAddress ||
  req.connection.socket.remoteAddress || '';
  if (ip.split(',').length > 0) {
    ip = ip.split(',')[0]
  }
  return ip;
};

這是一個獲取ip的幫助方法,入參即是請求上下文的request(nodejs)對象,而後咱們就拿到了用戶的ip。

03 — 項目實戰

如今咱們基礎數據都有了,如今就能夠對這些數據進行分類計算了,媽媽不再用擔憂個人學習了,哈哈。說一千道一萬,來點乾貨,直接看項目。

傳送門:web-monitor

圖片描述

喜歡請點個讚唄

或者去https://github.com/kisslove/w... Star一下

或者打賞一下

再或者……

哈哈,想法有點多了。

圖片描述

相關文章
相關標籤/搜索