注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

做自己网站的访问记录系统,用于推广统计  

2012-02-15 15:34:29|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

为了了解网站的访问情况,很多网站用了第三方的统计,比如google统计,百度统计,51.la,CNZZ等,但是统计的准确性不能而之,有的网站干脆放多个第三方的统计,以便做个比较,得到更准确的结果。

根据笔者对第三方统计的使用经验,第一:第三方统计有一定的水分存在,第二:因为具有通用性,并不能得到个性化的统计结果。第三:无法确定某个推广源的统计信息。因为这种问题的存在,公司有新的需要,便开发了一个简单的推广访问记录功能。

说起来并不复杂,只要用AJAX方法在后台添加访问记录即可,系统并没有根据Cookie来做跟踪记录,只是根据IP来,所以统计结果上可能有点出入,会少统计些。如果要更真实的统计结果,还是根据cookie统计为好,好了,下面就来介绍这个功能的实现。

思 路是这样的,页面中只有加入一个js文件,就能统计到该页面的访问信息,如果运用了模板功能,就只要在模板中加入此js即可,此js我们暂命名为 visit.js,放在根目录下,建议链接放在页面的底部即可。js文件里通过xmlhttpRequest这个对象把访问记录信息添加到数据库 Visit表中,表设计的字段如下:

下面来介绍js的实现,js方法需异步调用后台方法,这个文件我们定义为AJAX.aspx,方法比较简单,就是获取js文件当中传递过来的参数,然后添加到数据库中去。

js中代码如下:

Visit.js

 这里有一个特殊说明,根据IP来获取省份和城市信息,目前用的是新浪提供的js文件,没有用网上流传的IP库信息,用新浪的这个js有时候获取的是乱码信息,这个问题偶尔会出现。

 这是新浪的地址引用:<script language='javascript' type='text/javascript' src='http://zxianf.blog.163.com/blog/http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js'></script>

下面说后台,AJAX.aspx文件的前台删除大部分内容,只留下第一行信息,后台就是获取js传递过来的信息,代码如下:

AJAX.ASPX
按 Ctrl+C 复制代码

目前还有几个主要问题:

1、一是MAC地址没法获取,

2、用户离开网站的时间基本上获取不到,之前用js获取过,但实际效果还是不理想。

3、关键词的获取目前还有时是乱码,不能正确的获取。google出现乱码的机会多些。

好了,到这里一个简单的访问记录便好了,根据Fromsource字段可以统计推广来源信息,但各种各样的统计报表服务还需要根据需求来做。

目前举个简单的例子,统计每天访问的UV,PV,来自百度的访问IP,推广来源IP数,还有就是一跳率信息。根据我们上面的表结构,SQL语句如下:

统计每日UV,PV
            SELECT CONVERT(VARCHAR(12), visittimein, 23) + '(' + DATENAME(weekday,
CONVERT(VARCHAR(12), visittimein, 23))+ ')' 访问日期 ,
COUNT(DISTINCT visitip) UV ,
( SELECT SUM(RealVisitPageCount) VisitOne
FROM ( SELECT n.VisitIP ,
COUNT(DISTINCT n.VisitURL) RealVisitPageCount
FROM dbo.VisitInfo n
WHERE CONVERT(VARCHAR(12), n.VisitTimeIn, 23) = CONVERT(VARCHAR(12), t.visittimein, 23)
GROUP BY n.VisitIP
) a
) PV ,
COUNT(DISTINCT CASE WHEN visitreferrertype = 3 THEN visitip
END) 来自百度IP ,
COUNT(DISTINCT CASE WHEN CustomLinkID != '' THEN visitip
END) 推广IP ,
CAST (( SELECT SUM(RealVisitPageCount) VisitOne
FROM ( SELECT n.VisitIP ,
COUNT(DISTINCT n.VisitURL) RealVisitPageCount
FROM dbo.VisitInfo n
WHERE CONVERT(VARCHAR(12), n.VisitTimeIn, 23) = CONVERT(VARCHAR(12), t.visittimein, 23)
GROUP BY n.VisitIP
HAVING COUNT(DISTINCT n.VisitURL) = 1
) a
) * 100 / COUNT(DISTINCT visitip) AS VARCHAR(2)) + '%' AS 一跳率

FROM VisitInfo t

GROUP BY CONVERT(VARCHAR(12), visittimein, 23)
ORDER BY 访问日期 DESC

 结果显示如下:

这是测试的结果

当然随着数据量的增加,数据记录越来越多,感觉要做一张结果分析统计表,把每天的信息分析统计结果直接放到里面去,每天分析,以后直接查询该表即可

如果需要其他的分析报表,比如根据地区进行分析,根据浏览器进行兼容性分析,这里就不一一探讨了。还有一些就是跟踪统计分析,这里也没有实现,如果需要更好的记录访问信息,

笔者认为,还是基于Cookie实现比较合理,尤其是电子商务网站,可以跟踪用户是否注册,是否购买商品等转化率问题。


转载:http://www.cnblogs.com/netsql/archive/2011/12/24/2300510.html

  评论这张
 
阅读(436)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017