|
网站流量统计案例概述
背景说明
网站流量统计是改善网站服务的重要手段之一。通过在网站上获取用户的行为,可以分析哪些内容受到欢迎以及哪些页面有问题,以便更有针对性的网站改进活动。
统计指标描述
常见的网站流量统计指标通常包括以下分析:
1)根据在线情况分析
在线情况分析记录了在线用户的活动信息,包括:访问,访问者,页面,当前的住宿页面等。这些功能对企业实时掌握自己的网站流量非常有帮助。
2)根据时间段分析
时间分析在网站的任何时间内都提供流量变化。或一定时期的流量从一定时间段内发生变化,例如分布时间,每日访问分布,对公司了解网页浏览网页本质的时间段有很好的分析
3)根据源分析
来源分析提供了诸如访问,IP,独立访问者,新访问者,新访问者浏览时间以及车站的全部查看之类的数据。这些数据可以直接使公司了解促进结果的方式,从而更明显地分析这些网站的广告效果。
该项目统计的索引说明
系统架构设计
燃烧点和数据收集
概述
所谓的埋藏点是在应用程序中的特定过程中收集一些信息,以跟踪应用程序的应用,然后使用它进一步优化产品或提供操作的数据支持,即通过数据掩埋点),访问者(),网站上的时间,页面查看(页面视图,也称为页面浏览)和跳跃率(速率,也可以称为弹跳率)等。
用于数据处理的典型数据平台由以下5个步骤组成:
在其中,我们认为第一步,即掩埋的点和收集是最基本的问题。数据收集是否丰富,收集到的数据是否准确,以及该集合是否及时会直接影响整个数据平台应用的效果。
埋葬点的两种方法:
第一种类型:该公司在产品中开发成埋入的代码以收集它。编写埋入的代码,例如JS,然后将其放在某个应用程序网站上。
第二个:使用第三方统计工具,例如,Baidu ,Rubik's Cube,App Annie,Data等。
该项目的埋藏点实施
我们使用JS代码实现埋藏点。编写特定的JS脚本,然后将其嵌入需要用作日志的网页上(实际上是通过
日志数据收集模块描述
概述
日志集合的目的是最终将用户的访问日志在HDFS文件系统的特定目录中带入目标网站,以提供下一个用于处理的数据清洁模块。要完成这项工作,您需要将其分为以下步骤:
1)JS埋葬点
2)日志服务器构建
3)日志收集
以下四个步骤详细说明:一一详细说明:
1。JS埋葬点
我们需要收集对网页的访问。一般方法是在此网页上嵌入JS脚本,因此当用户访问页面时,页面上的JS脚本将在页面上动态添加标签,而SRC属性指向SRC属性的方向。日志服务器下透明图片的URL地址。
在URL参数上,将有一些用户访问信息(例如面试页面的URL,识别用户身份等),以便可以通过分析日志文件(通常是nginx或)日志文件来获得此信息。该JS埋葬脚本可以单独编写,代码胶片如下:
JS主功能号码:
<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre><code class="prism language-js"><span class="token keyword">function</span> <span class="token function">ar_main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{
</span>
<span class="token comment">//收集完日志 提交到的路径</span>
<span class="token keyword">var</span> dest_path <span class="token operator">=</span> <span class="token string">"http://localhost:8090/LogDemo/servlet/LogServlet?"</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> expire_time <span class="token operator">=</span> <span class="token number">30</span> <span class="token operator">*</span> <span class="token number">60</span> <span class="token operator">*</span> <span class="token number">1000</span><span class="token punctuation">;</span><span class="token comment">//会话超时时长</span>
<span class="token comment">//处理uv</span>
<span class="token comment">//--获取cookie ar_stat_uv的值</span>
<span class="token keyword">var</span> uv_str <span class="token operator">=</span> <span class="token function">ar_get_cookie</span><span class="token punctuation">(</span><span class="token string">"ar_stat_uv"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> uv_id <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span>
<span class="token comment">//--如果cookie ar_stat_uv的值为空</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>uv_str <span class="token operator">==</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">{
</span>
<span class="token comment">//--为这个新uv配置id,为一个长度20的随机数字</span>
uv_id <span class="token operator">=</span> <span class="token function">ar_get_random</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//--设置cookie ar_stat_uv 保存时间为10年</span>
<span class="token function">ar_set_cookie</span><span class="token punctuation">(</span><span class="token string">"ar_stat_uv"</span><span class="token punctuation">,</span> uv_id<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">//--如果cookie ar_stat_uv的值不为空</span>
<span class="token keyword">else</span><span class="token punctuation">{
</span>
<span class="token comment">//--获取uv_id</span>
uv_id <span class="token operator">=</span> uv_str<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">//处理ss</span>
<span class="token comment">//--获取cookie ar_stat_ss</span>
<span class="token keyword">var</span> ss_str <span class="token operator">=</span> <span class="token function">ar_get_cookie</span><span class="token punctuation">(</span><span class="token string">"ar_stat_ss"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">var</span> ss_id <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span> <span class="token comment">//sessin id</span>
<span class="token keyword">var</span> ss_no <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token comment">//session有效期内访问页面的次数</span>
<span class="token comment">//--如果cookie中不存在ar_stat_ss 说明是一次新的会话</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>ss_str <span class="token operator">==</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">{
</span>
<span class="token comment">//--随机生成长度为10的session id</span>
ss_id <span class="token operator">=</span> <span class="token function">ar_get_random</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//--session有效期内页面访问次数为0</span>
ss_no <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token comment">//--拼接cookie ar_stat_ss 值 格式为 会话编号_会话期内访问次数_客户端时间_网站id</span>
value <span class="token operator">=</span> ss_id<span class="token operator">+</span><span class="token string">"_"</span><span class="token operator">+</span>ss_no<span class="token operator">+</span><span class="token string">"_"</span><span class="token operator">+</span><span class="token function">ar_get_stm</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//--设置cookie ar_stat_ss</span>
<span class="token function">ar_set_cookie</span><span class="token punctuation">(</span><span class="token string">"ar_stat_ss"</span><span class="token punctuation">,</span> value<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">//--如果cookie中存在ar_stat_ss</span>
<span class="token keyword">else</span> <span class="token punctuation">{
</span>
<span class="token comment">//获取ss相关信息</span>
<span class="token keyword">var</span> items <span class="token operator">=</span> ss_str<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"_"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//--ss_id</span>
<span class="token keyword">var</span> cookie_ss_id <span class="token operator">=</span> items<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token comment">//--ss_no</span>
<span class="token keyword">var</span> cookie_ss_no <span class="token operator">=</span> <span class="token function">parseInt</span><span class="token punctuation">(</span>items<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//--ss_stm</span>
<span class="token keyword">var</span> cookie_ss_stm <span class="token operator">=</span> items<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token comment">//如果当前时间-当前会话上一次访问页面的时间>30分钟,虽然cookie还存在,但是其实已经超时了!仍然需要重新生成cookie</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">ar_get_stm</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> cookie_ss_stm <span class="token operator">></span> expire_time<span class="token punctuation">)</span> <span class="token punctuation">{
</span>
<span class="token comment">//--重新生成会话id</span>
ss_id <span class="token operator">=</span> <span class="token function">ar_get_random</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//--设置会话中的页面访问次数为0</span>
ss_no <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">//--如果会话没有超时</span>
<span class="token keyword">else</span><span class="token punctuation">{
</span>
<span class="token comment">//--会话id不变</span>
ss_id <span class="token operator">=</span> cookie_ss_id<span class="token punctuation">;</span>
<span class="token comment">//--设置会话中的页面方位次数+1</span>
ss_no <span class="token operator">=</span> cookie_ss_no <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">//--重新拼接cookie ar_stat_ss的值 </span>
value <span class="token operator">=</span> ss_id<span class="token operator">+</span><span class="token string">"_"</span><span class="token operator">+</span>ss_no<span class="token operator">+</span><span class="token string">"_"</span><span class="token operator">+</span><span class="token function">ar_get_stm</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">ar_set_cookie</span><span class="token punctuation">(</span><span class="token string">"ar_stat_ss"</span><span class="token punctuation">,</span> value<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">//当前地址</span>
<span class="token keyword">var</span> url <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token constant">URL</span><span class="token punctuation">;</span>
url <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//当前资源名</span>
<span class="token keyword">var</span> urlname <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token constant">URL</span><span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span><span class="token constant">URL</span><span class="token punctuation">.</span><span class="token function">lastIndexOf</span><span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
urlname <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>urlname<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//返回导航到当前网页的超链接所在网页的URL</span>
<span class="token keyword">var</span> ref <span class="token operator">=</span> document<span class="token punctuation">.</span>referrer<span class="token punctuation">;</span>
ref <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>ref<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//网页标题</span>
<span class="token keyword">var</span> title <span class="token operator">=</span> document<span class="token punctuation">.</span>title<span class="token punctuation">;</span>
title <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>title<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//网页字符集</span>
<span class="token keyword">var</span> charset <span class="token operator">=</span> document<span class="token punctuation">.</span>charset<span class="token punctuation">;</span>
charset <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>charset<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//屏幕信息</span>
<span class="token keyword">var</span> screen <span class="token operator">=</span> <span class="token function">ar_get_screen</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
screen <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>screen<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//颜色信息</span>
<span class="token keyword">var</span> color <span class="token operator">=</span><span class="token function">ar_get_color</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
color <span class="token operator">=</span><span class="token function">ar_encode</span><span class="token punctuation">(</span><span class="token function">String</span><span class="token punctuation">(</span>color<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//语言信息</span>
<span class="token keyword">var</span> language <span class="token operator">=</span> <span class="token function">ar_get_language</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
language <span class="token operator">=</span> <span class="token function">ar_encode</span><span class="token punctuation">(</span></code></pre></p> |
|