心有多大舞台便有多大

Embrace changes, pursue excellence, share niceness.

clickstream项目体会

clickstream是opensymphony上的一个开源项目,其目的是用于跟踪用户在web服务器上的浏览历史.通过这个模块得到的历史数据,可以分析出用户访问网站的路径,瓶颈,热点连接等,并根据这些数据对系统功能做出适当调整.

其设计的出发点是利用servlet的filter,在每次对servlet的访问时就日志.日志的实现主要是通过在当前用户的session中设置一个clickstream的跟踪对象.并利用HttpSessionListener来跟踪session的创建,销毁事件,从而达到跟踪一个用户的浏览历史功能.

鸡蛋里挑点骨头吧!
1.clickstream只有在用户访问servlet时才能实现跟踪的目的.如果网站有很多的静态页面,那么就无法通过它来跟踪了,还是apache的日志好啊!
2.clickstream在每个对servlet的访问都创建了一个session,这对很多不需要session的servlet来说,是不必要的.对于高并发访问的系统,这会增加系统的负荷,尤其是如果站点是采用集群的话,更会带来大量的session复制的性能问题.我建议才系统刚上线的时候或者有功能的重要更新的时候可以利用它来跟踪用户,以分析用户行为,改进系统.

posted on 2008-02-21 15:36 pony 阅读(2286) 评论(4)  编辑  收藏 所属分类: linux

评论

# re: clickstream项目体会 2008-02-22 13:36 pony

今天在网上偶尔看到了http://www.opentracker.net这个网站,看了下他提供的功能:
1.traffic analysis
summary trend
hourly trends
dialy trends
weekly trends
monthly trends
forecast
bounce rate of visitors
2.visitors
online and recent visitors
first time visitors
returning visitors
refered visitors
visitors by search term
entering
exiting
3.top navigation lists
most popular pages
top files & directory paths
top referrers
top search terms
top search engines
top exit links (3rd party)
top exit pages
top entry pages
4.location data
countries/ regions/ cities
companies/ organizations
ISPs
DMA-codes (US)
telephone area codes for U.S.
ZIP/ postal codes (U.S. & Canada)
continents
subcontinents
5.technical data
operating system
browsers
display colors
display resolutions
routers
domains
什么时候有空自己也做一个类似的项目吧,我好缺米啊
  回复  更多评论   

# re: clickstream项目体会 2008-02-25 11:49 pony

今天把apache的--enable-usertrack安装了.
日志格式为:"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{cookie}n"
从中可以得到:
1.访问时间:%t
2.访问内容:url
3.从哪个页面访问url的:referer
4.通过什么浏览器访问的:user-agent
5.是谁访问:cookie
6.访问的结果:会把http状态记录,如304,404等
有了这些数据,上面的需求基本都能实现了.  回复  更多评论   

# re: clickstream项目体会 2008-02-25 13:25 pony

Apache CustomLog的常用日志格式:
格式字符串 描述
%% 百分号(Apache2.0.44或更高的版本)
%a 远端IP地址
%A 本机IP地址
%B 除HTTP头以外传送的字节数
%b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示'-'而不是0。
%{Foobar}C 在请求中传送给服务端的cookieFoobar的内容。
%D 服务器处理本请求所用时间,以微为单位。
%{FOOBAR}e 环境变量FOOBAR的值
%f 文件名
%h 远端主机
%H 请求使用的协议
%{Foobar}i 发送到服务器的请求头Foobar:的内容。
%l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为"On",否则将得到一个"-"。
%m 请求的方法
%{Foobar}n 来自另一个模块的注解Foobar的内容。
%{Foobar}o 应答头Foobar:的内容。
%p 服务器服务于该请求的标准端口。
%P 为本请求提供服务的子进程的PID。
%{format}P 服务于该请求的PID或TID(线程ID),format的取值范围为:pid和tid(2.0.46及以后版本)以及hextid(需要APR1.2.0及以上版本)
%q 查询字符串(若存在则由一个"?"引导,否则返回空串)
%r 请求的第一行
%s 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,---%>s则指的是最后请求的状态。
%t 时间,用普通日志时间格式(标准英语格式)
%{format}t 时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)
%T 处理完请求所花时间,以秒为单位。
%u 远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)
%U 请求的URL路径,不包含查询字符串。
%v 对该请求提供服务的标准ServerName。
%V 根据UseCanonicalName指令设定的服务器名称。
%X 请求完成时的连接状态:X= 连接在应答完成前中断。
+= 应答传送完后继续保持连接。
-= 应答传送完后关闭连接。

(在1.3以后的版本中,这个指令是%c,但这样就和过去的SSL语法:%{var}c冲突了)

%I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。
%O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。
  回复  更多评论   

# re: clickstream项目体会 2008-03-20 09:25 pony

昨天晚上cloudwards跟我说,google的analytics就能实现这个clickstream的功能.确实是,不过,google的东西还是有些缺陷的,例如,第一,它不能跟踪到一个用户,而用了apache的这个模块,就可以通过cookie来跟踪;第二,它不能统计一个页面上引用的其它资源的调用,如图片,而通过apache的日志,这些都可以记录下来,这些数据对于优化网页的大小,甚至分布部署都是很有用的;第三,它不能统计出访问一个页面需要的时间,而apache的日志可以记录接收请求的时间,返回响应的时间,这对于分析网站的性能是很重要的数据;第四,apache的日志还可以记录每个请求返回的字节数.
所以,我想自己做的这个工具应该还是挺有用的.但我可以去借鉴下google analytics的报表  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: