用ASP統計使用者在網站的停留時間

來源:互聯網
上載者:User
統計|網站   雖然通常使用的點擊註冊技術可以計算出你的Web網站得到多少點擊,但是,如果能夠知道訪問者在網站上停留了多長時間就更好了。如果有上千人點擊並開啟了你的首頁,但他們卻在漂亮的“歡迎”圖形完全下載之前就已經跑到別的網站去了,這樣,你所花在建設和維護網站上的投資就沒有得到很好的回報。

  有兩種很好的方法用來記錄使用者在你的網站上花費了多少時間。第一個是使用基於ASP伺服器的sessions,第二是通過保持客戶機端cookies。要記住,使用sessions將給伺服器的處理工作增加負荷,但是它們確實提供了最簡潔的方法。還有一點要注意,那就是如果使用者端的瀏覽器不能支援cookie功能,那麼這兩種方法都不能工作。

  

ASP Session 技術
  使用ASP Session 是要求你把這個session 開始的目前時間儲存成那個使用者的session 層級變數,這將要用到你的網站或虛擬路徑下的global.asa 檔案中的Session_onStart 事件控制代碼。然後,在Session_onEnd 事件控制代碼中,你就可以計算出session 持續的時間,並將這個結果寫到記錄檔或資料庫中。在這裡的例子中使用了記錄檔:

< script language="VBScript" runat="server" >

Sub Session_onStart()

‘save the time that the session started

Session("StartTime") = Now()

End Sub


Sub Session_onEnd()

‘get the time that the user last loaded a page

‘assumes the default session timeout of 20 minutes


On Error Resume Next


‘set path and name of log file to be created

‘edit to suit your own machine directory layout

‘remember to give the directory Write or Full

‘Control permission for the IUSR_machine account

strFileName = "C:Tempvisit_lengths.txt"

datStartTime = Session("StartTime")

datEndTime = DateAdd("n", -20 , Now())

intMinutes = DateDiff("n", datStartTime, datEndTime)

If intMinutes > 0 Then

   ‘got a valid time so add it to the log file

   strInfo = "Visit ending at " & datEndTime _

     & " lasted for " & intMinutes & " minute(s)."

   ‘add user name to the log entry string here if required

   ‘strInfo = strInfo & " User name: " & strUserName

   Set objFileObject = Server.CreateObject("Scripting.FileSystemObject")

   ‘open text file to append data (the ForAppending constant = 8)

   Set objFile = objFileObject.OpenTextFile(strFileName, 8, True)

   objFile.WriteLine strInfo

   objFile.Close

End If

End Sub

< /script >

  你可以看到,當session 結束時,我們從目前時間中減去了session 的timeout的數值,如果考慮到使用者裝載最後一頁時所花費的時間,減去的值可以稍微小一點。這個數量由你去猜,因為用這個技術並不能測出實際值。

  注意,如果你在任何頁面中使用了ASP的 Session.Abandon 方法,就不能得到正確的結果。因為這種方法立即中斷session,這樣,從實際時間中減去session長度就會給出一個不正確的訪問時間(有時候甚至是負數)。更糟糕的是,在ASP 2.0版本中,這種方法還經常徹底不能啟動Session_OnEnd事件。

  在某些網站上使用一種“中止伺服器操作”的連結來啟動Session.Abandon方法,但是根據經驗,很少有使用者會去點擊它。他們只是轉到另一個網站,讓session自行中斷。

  這是我們從記錄檔中得到的一些記錄:

  Visit ending at 6/5/00 1:05:26 AM lasted for 2 minute (s).

  Visit ending at 6/5/00 1:06:14 AM lasted for 47 minute(s).

  Visit ending at 6/5/00 1:12:18 AM lasted for 22 minute(s).

  Visit ending at 6/5/00 1:29:54 AM lasted for 9 minute(s).

  如果使用者訪問的時間少於1分鐘(比如說,他們的session開始後過了1分鐘還沒能裝載另一頁),用我們的代碼就不顯示在列表中。從整個session長度中減去這個session的timeout ,就會得到0,在這一點我們的代碼就將其捨棄:

  If intMinutes > 0 Then ?

  當然你可以修改代碼以適應自己的需要。

  注意:要記住session結束後才開始寫記錄檔的條目。你不能立刻看到它們。如果想試著更快地看到結果,可以在頁面上修改Session.Timeout 的屬性。

  

在資料庫中記錄結果
  要將計算的結果記錄資料庫中而不是記錄檔中,可以建立一個適當的SQL INSERT聲明,執行它來更新一個你已經提供的資料庫表:

...

strSQL = "INSERT INTO YourTable (UserName, SessionEnd, " _

& "SessionLength) VALUES (‘" & strUserName & " ‘, #" _

& datEndTime & "#, " & intMinutes & ")"

Set oConn = Server.CreateObject("ADODB.Connection")

oConn.open "DSN=yourdsn;UID=username;PWD=password;"

oConn.Execute strSQL

Set oConn = Nothing

...

  然後你就可以用任何方式來使用這些資料了。你可以建立ASP頁面來讀取資料並將資料呈現給管理員,或者從資料庫中將其複製到一個電子工作表中,有時間的時候再進行分析。

  但是要記住,使用ASP sessions會帶來一些問題。在ASP 2.0中,當主應用程式目錄下的嵌套目錄中有global.asa 的副本時,有時sessions 會丟失。還有,如果你在URL、分頁檔名以及頁面之間的超級連結中使用字母的大小寫不同的話,象Navigator那樣的瀏覽器就把URL作為大小寫敏感來對待,因此不把特殊的ASP session cookie發送回來,這樣這種方法的使用也是不可靠的。

  

“客戶機端Cookie”技術
  使用客戶機端Cookie也很容易。完成這一工作的代碼可以放在一個ASP #include 檔案中,然後將它插入到網站中使用者肯定會去訪問的首頁面中。當然,如果願意的話可以將其插入所有的頁面。只要在使用者訪問的過程中它工作正常,就能給出正確的結果。

  設定了路徑和記錄檔名之後,代碼定義一個子程式,將一個值附加到記錄檔的,就象前面的“ASP Sessions”的例子一樣。如果你願意的話,可以取代我們使用的代碼來更新一個資料庫表而不是一個記錄檔。

< %

‘measure visit length with cookie


‘set path and name of log file to be created

‘edit to sui



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。