最近老是有用戶(hù)說(shuō),頁(yè)面打開(kāi)慢,但是自己打開(kāi)又很快,所以想統計一下用戶(hù)打開(kāi)網(wǎng)站的時(shí)間,當然這個(gè)統計有點(diǎn)粗糙,但是也能說(shuō)明一點(diǎn)問(wèn)題
實(shí)現原理很簡(jiǎn)單,就是在header里面保存一下用js保存一下當前時(shí)間,然后在body結束前面再加一段js,加載耗時(shí)(ms) = 用當前時(shí)間 - header里面的時(shí)間,就得到了這個(gè)頁(yè)面加載大概需要的時(shí)間,主要是頁(yè)面內容、CSS、js這些加載所花的時(shí)間,ajax這里不統計,知道原理之后就簡(jiǎn)單了
這是header里面加的
<script type="text/javascript">var loadTime = new Date().getTime()</script>
1
這是body結束標簽前的,主要用來(lái)做數據上傳
<script type="text/javascript">
(function(){var time = new Date().getTime()-loadTime;var args = ['time=' + time,'url=' + location.href,'app=d2VpeGlu'];var img = new Image(1, 1);img.src = 'http://www.test.com/load.gif?' + args.join("&");})()
</script>
1
2
3
通過(guò)加載圖片的方式把數據上傳到服務(wù)器,圖片沒(méi)有跨域問(wèn)題,我這里主要只采集兩個(gè)信息,一個(gè)是time,也就是時(shí)間,一個(gè)是當前頁(yè)面的url,廢話(huà),沒(méi)有url我怎么知道是哪個(gè)頁(yè)面加載比較慢,還有一個(gè)參數是app,只要用來(lái)區分是那個(gè)網(wǎng)站,因為我部署了多個(gè)網(wǎng)站,所以加一個(gè)app標識,好過(guò)濾數據
服務(wù)端的nginx其實(shí)并沒(méi)有一個(gè)叫做load.gif的圖片,這個(gè)是我來(lái)搜集數據用的,代碼就幾行
location = /load.gif {
access_log logs/stat.log main;
default_type image/gif;
content_by_lua_block{
ngx.say("")
}
}
1
2
3
4
5
6
7
其實(shí)這里什么都沒(méi)做,直接返回了空內容,只是把日志寫(xiě)到了一個(gè)單獨統計的log文件里面,好方便查看,有時(shí)間的話(huà)在lua里面處理一下,做個(gè)統計排序,做個(gè)數據可視化頁(yè)面,就差不多了,最近用openresty做了兩個(gè)網(wǎng)站,感覺(jué)還不錯,nginx + lua 玩法很多。
聯(lián)系客服