網站流量統計能夠幫助咱們分析網站的訪問和廣告來訪等數據,裏面包含不少數據的,好比訪問試用的系統,瀏覽器,ip歸屬地,訪問時間,搜索引擎來源,廣告效果等。原來是同樣的,此次先實現了PV,UV,IP三個重要指標的統計。 PV(訪問量):Page View, 即頁面瀏覽量或點擊量,用戶每次刷新即被計算一次。 UV(獨立訪客):Unique Visitor,通常使用cookie標記,訪問您網站的一臺電腦客戶端(好比一臺電腦開多個瀏覽器訪問則爲多個UV)爲一個訪客,00:00-24:00內相同的客戶端只會被計算一次。 IP(獨立IP):指獨立IP數。00:00-24:00內相同IP地址之被計算一次(多臺電腦可能共用一個ip)。 ip、pv、uv的區別: IP(獨立IP):某IP地址的計算機訪問網站的次數。這種統計方式很容易實現,具備真實性。因此是衡量網站流量的重要指標。 PV(訪問量):PV反映的是瀏覽某網站的頁面數,因此每刷新一次也算一次。就是說PV與來訪者的數量成正比,但PV並非頁面的來訪者數量,而是網站被訪問的頁面數量。 UV(獨立訪客):能夠理解成訪問某網站的電腦的數量。網站判斷來訪電腦的身份是經過來訪電腦的cookies實現的。若是更換了IP後但不清除cookies,再訪問相同網站,該網站的統計中UV數是不變的。 工做流程: S1:編寫監控javascript和提供接口。這個接口返回的是監控網站對應的javascript文件,這個文件能夠再客戶端能夠標記和採集訪客的信息。 S2:網站調用接口。只需將引入javascript到要監控的站點便可,訪客訪問該站點時,javascript文件就會被加載。 S3:標記和採集數據。監控js被加載後就會往瀏覽器寫入cookie標記訪客,好比新訪客生產一個新cookie和標記訪問次數,如果老用戶則,讀取 cookie信息,計算訪問次數和最後訪問時間等,這些客戶端的信息處理完後,則向指定的服務器發送數據。 S4:最後服務器接收javascript提交過來的數據處理入庫和後續的數據處理了。
1.models層創建統計表
# 每日訪問量統計 class Statistics(models.Model): pv = models.IntegerField(default=0) uv = models.IntegerField(default=0) date = models.CharField(max_length=200) class Meta: verbose_name = '網站統計信息' verbose_name_plural = '網站統計信息' def__str__(self): return self.date
2.decorator.py創建裝飾器函數
實現每次調用view試圖函數前數據庫字段先自加1javascript
from models import Statistics import time def pvCount(func): def wrapper(request, *args, **kwargs): dateObj_list = Statistics.objects.filter(date=time.strftime('%Y-%m-%d')) count = dateObj_list.count() if count == 0: # ==0,表示第一次訪問,pv,uv默認都爲1 Statistics.objects.create(pv=1,uv=1,date=str(time.strftime('%Y-%m-%d'))) else: todayObj = Statistics.objects.get(date=str(time.strftime('%Y-%m-%d')))
# 每訪問一次,pv+=1 todayObj.pv += 1 todayObj.save() return func(request, *args, **kwargs) return wrapper
3.view試圖導入裝飾器函數,並調用
from decorator import pvCount @pvCount def index(request): count = models.NewMachine.objects.all().count() phycount = models.PhysicalHost.objects.all().count() ret = dict() ret['count'] = count ret['phycount'] = phycount return render_to_response('index.html', ret)