fj,看看这文章吧:统计用户在站点的停留时间

统计|站点

                用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 cook

时间: 2024-08-17 16:18:41

fj,看看这文章吧:统计用户在站点的停留时间的相关文章

用ASP统计用户在站点的停留时间

统计|站点 虽然通常使用的点击注册技术可以计算出你的Web站点得到多少点击,但是,如果能够知道访问者在站点上停留了多长时间就更好了.如果有上千人点击并打开了你的主页,但他们却在漂亮的"欢迎"图形完全下载之前就已经跑到别的站点去了,这样,你所花在建设和维护站点上的投资就没有得到很好的回报. 有两种很好的方法用来记录用户在你的站点上花费了多少时间.第一个是使用基于ASP服务器的sessions,第二是通过保持客户机端cookies.要记住,使用sessions将给服务器的处理工作增加负荷,

用ASP统计用户在站点的停留时间(1)

虽然通常使用的点击注册技术可以计算出你的Web站点得到多少点击,但是,如果能够知道访问者在站点上停留了多长时间就更好了.如果有上千人点击并打开了你的主页,但他们却在漂亮的"欢迎"图形完全下载之前就已经跑到别的站点去了,这样,你所花在建设和维护站点上的投资就没有得到很好的回报. 有两种很好的方法用来记录用户在你的站点上花费了多少时间.第一个是使用基于ASP服务器的sessions,第二是通过保持客户机端cookies.要记住,使用sessions将给服务器的处理工作增加负荷,但是它们确实

用ASP统计用户在站点的停留时间(2)

然后你就可以用任何方式来使用这些数据了.你可以创建ASP页面来读取数据并将数据呈现给管理员,或者从数据库中将其复制到一个电子工作表中,有时间的时候再进行分析. 但是要记住,使用ASP sessions会带来一些问题.在ASP 2.0中,当主应用程序目录下的嵌套目录中有global.asa 的副本时,有时sessions 会丢失.还有,如果你在URL.页面文件名以及页面之间的超级链接中使用字母的大小写不同的话,象Navigator那样的浏览器就把URL作为大小写敏感来对待,因此不把特殊的ASP s

c++问题-任意两篇英文文章,统计其相同单词数所占的百分比

问题描述 任意两篇英文文章,统计其相同单词数所占的百分比 文章1和2的文件名由用户输入.将两篇文章的相同单词,相同单词数量,相同单词在两篇文章的出现次数,相同单词分别在各自文章所占百分比,输出到屏幕,同时保存在一个单独的文件中 解决方案 首先强调下,你的算法有问题,单词相同占比不能说明文章雷同. 非要按照你做,你可以扫描两篇文章,构造字典树.然后可以得到一个全文单词和出现词频的排序,两者比较下就可以了. C#构造字典树的代码我分享过. 解决方案二: http://bbs.csdn.net/top

如何让自己的原创文章更吸引用户眼球

众所周知,网站优化过程中优质文章的创造是任何一位seoer都必须时常关注的问题,笔者认为文章不仅仅原创就可以,原创仅仅是网站文章更新过程中最基本的要求,随着搜索引擎算法的不断变化,笔者认为文章除了原创之外,更重要的体现在能否真正解决用户目前存在的问题,能否吸引用户眼球引起读者共鸣才是核心.鉴于此,笔者认为我们主要通过以下几个策略,将优质网站内容和用户喜好结合起来,才能创作出更接地气的文章,好了闲话短续咱们进入今天主题. 第一,文章写作之前首先要分析目标客户群体.因为我们知道无论是我们自己的网站还

c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度

问题描述 c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度 我在统计中文的时候出现了问题,请各位大神指教一下 #include #include using namespace std; int main() { string str; cout << "请输入一个字符串,以换行为结束!n"; getline(cin, str); size_t count = 0; size_t spaceNum=0; size_t lette

mysql根据多个数据库的订单表统计用户数量

问题描述 mysql根据多个数据库的订单表统计用户数量 假设db_amazon.tbl_order,db_jd.tbl_order,db_taobao.tbl_order这三张表中都存在(date, user_id)这两个字段. 同一个用户在各个表中的user_id相同 每个用户每天下单数量不限,amazon.jd.taobao也任选 amazon.jd.taobao的日下单量假设在1000W级别 求教:从执行效率的角度,如何计算出今天下过单的用户一共有多少

第一届百度统计用户大会召开

中介交易 SEO诊断 淘宝客 云主机 技术大厅 8月14日,主题为"数聚价值 智胜未来"的第一届百度统计用户大会暨开放平台发布会在北京召开.备受瞩目的百度统计开放平台正式发布,百度统计将从网站数据分析助力互联网企业顺应大数据时代的趋势.在会议中来自I-COM (International Conference on Online Media Measurement) 中国的副主席Joni Ngai女士带来了国际先进度的online measurement理念.同时,来自聚美优品.铁血网

Ajax实现对静态页面的文章访问统计功能示例_php技巧

本文实例讲述了Ajax实现对静态页面的文章访问统计功能.分享给大家供大家参考,具体如下: 众所周知,静态页面不仅速度快,而且对seo也有一定的帮助.前些日子,写了一帖关于<在SAE平台实现WordPress页面纯静态化至KVDB>.我自己使用了一段时间后,发现提速确实很明显.但是随之而来的一个问题就是,由于文章静态化后,页面并不会经过WordPress程序的处理,这样就导致了文章的访问量统计失效.当然,有一个叫做wp-postview的插件是可以解决这个问题的,但是我不是很喜欢插件,因为会拖慢