輕量的 Google Analytics
Google Analytics
是個很知名的網頁資料分析工具,加入到網頁的方法也很簡單,只需要貼上幾個
<script>
到 html
中就好了。不過對於一些有對自己網站使用一些檢測工具的人來說可能會發現這其實是個效能殺手,主要是它
Headers 中的快取時間很短,而腳本大小又蠻大的
對此,我之前就有想過到底要不要放 Google Analytics 在目前這個網頁上,一方面是想知道訪客主要都瀏覽哪些文章,但又不想讓這個網頁太過肥大、緩慢。後來經過我的一些研究後,發現原來 Google Analytics 有提供 api 讓使用者發送統計資料,不需要官方的 script 就能運作了
用 Measurement Protocol 來發送資訊
Measurement Protocol 是 Google Analytics 提供的 api,可供使用者手動發送一些統計資料
使用方法就是發送一個 POST
(推薦) 或 GET
請求到 https://www.google-analytics.com/collect
就好了
例如下面這個是此網頁發送資訊給 Google Analytics 的 code:
1 | var uid = localStorage.getItem('uid') || (Math.random() + '.' + Math.random()) |
裡面的參數分別是:
v
: api protocol 版本的編號,目前只有1
能用而已tid
: 一般使用 GA 時會用到的UA-xxxxxxxxx-x
編號cid
: 一個獨一無二的 ID,用來辨識使用者的t
: 資訊的種類,如pageview
是指網頁瀏覽,全部的種類可以參考這邊dp
: 指網址的 path 部分,不含 hostname querystring 之類的部分
這些參數可以根據自己的需求與 Parameter Reference 中寫的去修改,像我只用這些參數是因為我也只需要知道這些
關於廣告阻擋器
有些人可能會在想這會不會被廣告阻擋器阻擋,答案是肯定的,因為資訊的傳送目標是
www.google-analytics.com
,所以這基本上會被絕大多數的
adblocker 所阻擋
當然有人可能會想可以弄個 reverse proxy 架在自己的伺服上,把
/collect
的 url 改到自己的 server 然後把真實 ip 加到
uip
參數去再傳給 GA
的伺服器,理論上這應該可行(我沒試過),但我認為沒必要硬去收集不想被收集資料的人的資料