|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的东西可是什么都要收钱的啊!统计|站点 固然凡是利用的点击注册手艺可以盘算出你的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</p> 国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了 |
|