月度归档:2010 年三月

session和cookie的辨析

  session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述和辨析,希望能与大家共同探讨下。

  session和cookie的最大区别在于session是保存在服务端的内存里面,而cookie保存于浏览器或客户端文件里面;session是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之后,session也就“消失”了,而cookie更多地被用于标识用户,它可以是长久的,用于用户跟踪和识别唯一用户(Unique Visitor)。

关于session

  session被用于表示一个持续的连接状态,在网站访问中一般指代客户端浏览器的进程从开启到结束的过程。session其实就是网站分析的访问(visits)度量,表示一个访问的过程。

session

  session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含sessionid,如果未包含,则系统会创造一个名为JSESSIONID的输出cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的session。这里需要注意的是session始终是有服务端创建的,并非浏览器自己生成的。

  但是浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现。

  这里有一个很关键性的注意点,即session失效时间的设置,这里要分两方面来看:浏览器端和服务端。对于浏览器端而言,session与访问进程直接相关,当浏览器被关闭时,session也随之消失;而服务器端的session失效时间一般是人为设置的,目的是能定期地释放内存空间,减小服务器压力,一般的设置为当会话处于非活动状态达20或30分钟时清除该session,所以浏览器端和服务端的session并非同时消失的,session的中断也并不一定意味着用户一定离开了该网站。目前Google Analytics和Omniture都定义当间隔30分钟没有动作时,算作一次访问结束,所以上图中session的最后一步不只是离开,也有可能是静止、休眠或者发呆的状态。

  还有一点需要注意,就是现在的浏览器好像趋向于多进程的session共享,即通过多个标签或页面打开多个进程访问同一网站时共享一个session cookie,只有当浏览器被关闭时才会被清除,也就是你有可能在标签中关闭了该网站,但只要浏览器未被关闭并且在服务器端的session未失效前重新开启该网站,那么就还是使用原session进行浏览;而某些浏览器在打开多页面时也可能建立独立的session,IE8、Chrome默认都是共享session的,在IE8中可以通过菜单栏中的文件->新建会话来建立独立session的浏览页面。

关于cookie 

cookie

  cookie 是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取cookie包含的信息。

  session的实现机制里面已经介绍了常见的方法是使用会话cookie(session cookie)的方式,而平常所说的cookie主要指的是另一类cookie——持久cookie(persistent cookies)。持久cookie是指存放于客户端硬盘中的cookie信息(设置了一定的有效期限),当用户访问某网站时,浏览器就会在本地硬盘上查找与该网站相关联的cookie。如果该cookie 存在,浏览器就将它与页面请求一起通过HTTP报头信息发送到您的站点,然后在系统会比对cookie中各属性和值是否与存放在服务器端的信息一致,并根据比对结果确定用户为“初访者”或者“老客户”。

  持久cookie一般会保存用户的用户ID,该信息在用户注册或第一次登录的时候由服务器生成包含域名及相关信息的cookie发送并存放到客户端的硬盘文件上,并设置cookie的过期时间,以便于实现用户的自动登录和网站内容自定义。

  Apache自带的mod_usertrack模块可以在用户首次来到当前网站的时候给用户种下一个唯一的cookie(较长时间过期),这个cookie是用户首次来当前网站的IP地址加上一个随机字符串组成的。同时在自定义WEB日志中在最后增加%{cookie}n字段可以实现cookie在apache日志中的输出,用于数据统计与用户跟踪。

你找到答案了吗?

unlock  博客自发布第一篇文章以来,到今天刚好有一个月时间了,所以这里对开篇中提出的几个问题做一个解答,如果你还没有阅读过该文章,建议先阅读开篇

  也许很多朋友已经找到了答案,也有可能你们的解答与我下面的描述会有差异,当然只要都能解释问题,符合问题的条件,一切答案都是可以被接受的,问题的答案可能并非唯一的。其实这些问题只是想对网站数据分析做一些简单的解释,阐述作者个人对网站数据分析的一些认识,同时让这个过程更具趣味性。

1、趋势分析与预测

  从表面看,寻找数字规律中的这串数字可能毫无规律,但只要把它们放到图表上,你就会惊奇地发现它们呈一条完美的曲线排列了起来:

digits-trend

  这是在excel里面以1-20的序列为横坐标,以那串20个数字为纵坐标一一对应画出的散点图,可以看到这是一条比较规范的类S型曲线,也是最典型的一类成长曲线,也许你的网站的用户访问量或者销售额正是以类似这种趋势增长的。发现这种规律之后,就可以用数据统计的方法对其进行分析,对于这类有规律线性曲线,最常用的方法就是回归分析:

  首先可以根据S曲线确定其基本表达式为:

            S-function1S-function2

  表达式因为包含三个未知参数,无法直接通过回归分析求得,所以首先需要根据S曲线的特征和已知的数字观察到曲线无限接近于100,可以先暂定α的值为0.01,则该表达式变为:

S-function-converted

  可以将其转化为线性表达式:

linear-function

            其中y*=ln(1/y-0.01); x*=x; α*=lnβ; β*=-θ

  然后就可以用标准一元线性回归的方法进行拟合和分析,计算得到拟合度R2=0.998,显著性系数接近于0,拟合度非常高,结果可以被接受。算出α和β的值约为0.7381和-0.5066,代入原方程得到:

S-function-result

  再根据改方程当x=9是代入,得y约为31.35,预测得到那个缺失的数字约为31。

  当然这可能只是其中一种分析和预测的方法,如果可以找到另外的拟合度足够高的表达式,那么用该表达式预测得到的数字一样有效,答案并非唯一的。这个题目是作者自己编的,自然计算得到的拟合度十分理想,在现实中可能并没有这么完美的曲线存在,但只要用类似的方法去思考和分析,一样也能找到需要的答案。

  这里已经完成了对该题的解释,想顺带说一下成长曲线。大家都知道成长曲线存在着无法达到的极值,获取对于生物界来说该曲线确实是无法突破的,那么对已企业或者网站来说类似的流量增长曲线或者利润增长曲线是否可以被突破呢?答案是肯定的。任何失误的发展都会遇到瓶颈,网站也是这样,关键是如何发现和认识自身的瓶颈,只有真正地了解自身的问题,才能通过不断地优化、创新和市场拓展突破瓶颈,当瓶颈一旦被突破,原先无法逾越的极值点将变成新成长曲线的起始点继续向上攀升,而数据分析正是网站发现瓶颈的最有力武器。

2、识别用户

  关于那道逻辑题,也许很多朋友已经发现这个就是根据爱因斯坦的那题经典的逻辑题改编而来的,答案如下:

次序  A B D E C
穿着 
城市  广州 青岛 北京 上海 杭州
职业  律师 工程师 教授 医生 作家
饮料 牛奶 咖啡 啤酒

  其实对于网站分析来说,识别用户是极其重要的一个过程,网站分析中有一个重要的指标——Unique Visitor(UV),用以标识唯一的访问用户,而如何从网站的底层日志中识别每次访问是否是同一用户一直是网站分析中的一个难点,因为某些时候用户访问是未登录的,或是匿名的,甚至连cookie都是被禁用的。而对于网站分析来说,识别唯一用户又是十分有用的,它直接影响到针对每个用户的网站行为分析、用户细分及定向营销等多个方面,所以之后会有专门的对如何更好地识别网站用户的相关介绍。

3、学会细分

  细分是网站分析中一个十分重要的技巧和方法,无论是用户、产品、页面等都可以通过细分更好地发现其特征。其实图形题中的两个问题正是细分中的两种基本的方法:一种是已知类别,将类别未明的事物归类;另一种是已知存在这么多的事物,将这些食物分成若干类,我对这两个问题的解答如下(当然这个答案并非唯一,只要归类有所依据的答案都是可以被接受的):

  1)先观察2、4、8三个图形所拥有的相同特征:4条边、左右对称、上下对称、重心在同一水平线上、序号都是偶数,根据这些特征去寻找共同特征最多的图形,可以看到6号的圆形是最为接近的:左右对称、上下对称、重心在同一水平线上、序号都是偶数,所以我的答案是选择6号的圆形;

  2)与第一题类似,从所有的图形中选择拥有最多共同特征的归为一类,并使各类别间的特征差异最大,我是从这几个角度进行区分的:边数、轴对称、中心对称、重心分布、序号,分成四类如下:

    A类:2、4、8(4条边、左右对称、上下对称、重心都在水平中间线、序号都为偶数);

    B类:1、3、5(左右对称、重心都在水平中间线以下、序号都是奇数);

    C类:6(中心对称、任意轴对称、重心在水平中间线);

    D类:7(4条边、中心对称、重心在水平中间线);

  其实这两个问题也是数据挖掘中两个方法的简单体现:

分类

  分类就是把一些新的事物映射到给定类别的中的某一个类别,用于描述事物或预测。常见的分类方法有:决策树、KNN法(K-Nearest Neighbor)、SVM法(Support Vector Machine)、VSM法(Vector Space Model)、神经网络等。

聚类

  聚类就是将数据对象分组成多个类或者簇,划分的原则是在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。聚类算法可以分为划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法。

4、互联网发展趋势

Moshe

  对于最后一个问题,其实大家可以各抒己见,这里也只是作者的个人看法,也许阐述和对比的网站不一定恰当,这里只是想说明作为一个网站分析师,必须时刻关注互联网的发展趋势,而Alexa上面排在TOP前几位的网站正是互联网不断发展和进步的指向标。

  正如前几天有人预测2010年facebook的流量将超越google,成为全球最受欢迎的网站,结果我上Alexa一比较,果然facebook在数据上除了用户量不及google外,几乎所有数据都持平或超越了google,其中页面访问量目前两个网站已不相上下,而网站访问时间facebook甚至已经达到了google的3倍(当然这跟网站本身的服务性质有关);但确实不得不佩服facebook的实力,流量一路飙升,过关斩将,到现在能够觊觎互联网老大的宝座,但是要真正坐上去还得在用户量上超越google。其实很多人看好facebook也不无道理,因为毕竟facebook是信息的创造者,而google只是信息的整合者,创造者掌握着信息的信息竞争力。