1. 程式人生 > >python-裝飾器實現pv-uv

python-裝飾器實現pv-uv

python-裝飾器實現pv-uv

 
網站流量統計可以幫助我們分析網站的訪問和廣告來訪等資料,裡面包含很多資料的,比如訪問試用的系統,瀏覽器,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試圖函式前資料庫欄位先自加1

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)

 

 

 

 

       
網站流量統計可以幫助我們分析網站的訪問和廣告來訪等資料,裡面包含很多資料的,比如訪問試用的系統,瀏覽器,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試圖函式前資料庫欄位先自加1

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)

 

 

 

 

 
網站流量統計可以幫助我們分析網站的訪問和廣告來訪等資料,裡面包含很多資料的,比如訪問試用的系統,瀏覽器,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試圖函式前資料庫欄位先自加1

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)