网站流量统计系统Word文档格式.docx
《网站流量统计系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《网站流量统计系统Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
也就是说,一天内同一台机器登陆网站的次数不论是多少,在流量统计中只记为一次有效登陆,这种计算方法可以较为科学的计算出有多少人登陆过该网站,有效的防止了有意的对网站进行刷新从而增加自己网站的点击率。
网站流量指标:
1、独立的访问者数量(uniquevisitors);
2、重复的访问者数量(repeatvisitors);
3、页面浏览数(pageviews);
4、每个访问者的页面浏览数(pageviewsperuser);
5、某些具体文件/页面的统计指标,如页面显示次数、文件下载次数等。
用户行为指标:
1、用户在网站的停留时间;
2、用户来源网站(也叫“引导网站”);
3、用户所使用的搜索引擎及其关键词;
4、在不同时段的用户访问量情况等。
用户浏览网站的方式:
1、用户上网设备类型;
2、用户浏览器的名称和版本;
3、访问者电脑分辨率显示模式;
4、用户所使用的操作系统名称和版本;
5、用户所在地理区域分布状况等。
1.3网站流量统计原理
当浏览者访问网站时,会向网站所在服务器发送HTTP请求,由于网页是富媒体聚合形式,当引用第三方的图片、音频、视频时,也会向媒体所在服务器发送请求。
通过向所要统计网站页面中插入一段HTML代码来实行转向访问。
HTTP请求标头(Request-Header)中包含了用户代理(User-Agent),引用地址(Referer),以及通过WEB服务器获得客户端的IP地址。
绝大多数HTTP通讯由用户代理进行初始化,并通过它来组装请求以获取存储在一些原始服务器上的资源。
在最简单的情况下,通过用户代理与原始服务器之间一个简单的连接就可以完成。
图1.1HTTP通讯过程
HTTP/1.0的请求标头允许客户端向服务器端传递该请求的附加信息及客户端信息。
该域做为请求的修饰部分,遵照编程语言程序调用参数的语法形式。
[1][2]
Request-Header=Authorization;
用户代理的身份凭证
|From;
用户的电子邮件地址
|If-Modified-Since;
同最后一次修改时间的比较
|Referer;
引用页面的URI
|User-Agent;
用户代理软件的信息
HTTP/1.1请求标头已经增加到了19个,不过增加的部分并不包含所要收集的数据,所以本文不进行列举。
第2章Python语言及Django框架简介
2.1Python语言简介
Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器,我们用的比较多的是C版本的Python,也就是使用C语言实现的Python解释器,除此之外还有使用Java实现的Jython和使用.NET实现的IronPython,这些实现可以使Python用户充分利用己有的Java及.NET资源。
同时,Python支持几乎所有常用的操作系统,包括:
Windows/DOS、Macintosh、Linux及FreeBSD。
及很多不常用的操作系统,包括AIX、AS/400(OS/400)、BeOS、OS/2、OS/390与z/OS、PalmOS、PlayStation与PSP、Psion、QNX、RISCOS、Series60、SparcSolaris、VMS、VxWorks、WindowsCE或PocketPC、SharpZaurus、MorphOS等。
可扩充性可说是Python作为一种编程语言的特色。
新的内置模块(module)可以用C或C++写成。
而我们也可为现成的模块加上Python的界面。
Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。
因此Python具有非常庞大的程序库,通过它们可以快速完成绝大部分常用的任务,如:
从某个URL中获取信息、正则表达式、获得某个文件或字符串的MD5特征字符串、多线程、XML及HTML的分析等。
Python也被称为是一门清晰的语言。
因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了
2.2Django框架简介
Django是一个开放源代码的Web应用框架,由Python写成。
采用了MVC的设计模式,即模型M,模版T和视图控制器V。
它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。
并于2005年7月在BSD许可证下发布。
这套框架是以比利时的吉普赛爵士吉他手DjangoReinhardt来命名的。
Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。
Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don'
tRepeatYourself)。
在Django中Python被普遍使用,甚至包括配置文件和数据模型。
Django框架的核心包括:
一个对象-关系的映射器,用作数据模型(以Python类的形式定义)和关系数据库间的媒介;
一个基于正则表达式的URL分发器;
一个视图系统,用于处理请求;
以及一个模板系统。
核心框架中还包括:
1、一个轻量级的、独立的Web服务器,用于开发和测试。
2、一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换。
3、一个缓存框架,并有几种缓存方式可供选择。
4、中间件支持,允许对请求处理的各个阶段进行干涉。
5、内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信。
6、一个序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例。
7、一个用于扩展模板引擎的能力的系统。
Django包含了很多应用在它的“contrib”包中,这些包括:
1、一个可扩展的认证系统
2、动态站点管理页面
3、一组产生RSS和Atom的工具
4、一个灵活的评论系统
5、产生Google站点地图(GoogleSitemaps)的工具
6、防止跨站请求伪造(cross-siterequestforgery)的工具
7、一套支持轻量级标记语言(Textile和Markdown)的模板库
8、一套协助创建地理信息系统(GIS)的基础框架
2.3SQLite数据库简介
SQLite是遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。
它是D.RichardHipp建立的公有领域项目。
不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。
所以主要的通信协议是在编程语言内的直接API调用。
这在消耗总量、延迟时间和整体简单性上有积极的作用。
整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。
它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
库实现了多数的SQL-92标准,包括事务,就是代表原子性、一致性、隔离性和持久性的(ACID),触发器和多数的复杂查询。
不进行类型检查。
你可以把字符串插入到整数列中。
例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。
其他用户认为这是主要的缺点。
多个进程或线程可以访问同一个数据而没有问题。
可以并行的满足多个读访问。
只有在其他访问当前不被服务的时候才能满足写访问;
否则写访问失败并带有一个错误代码(也可以在可配置的超时过期之后自动的重试)。
提供了叫做sqlite的一个独立程序用来查询和管理SQLite数据库文件。
它也充当写使用SQLite库的应用的一个例子
第3章需求分析
3.1系统描述
网站流量统计系统包括三个基本部分,一个是记录访客部分,包括记录访客的IP地址,浏览器信息,操作系统信息,浏览时间,离开时间,浏览页面,会话记录。
一个是系统管理部分,包括用户管理,用户组管理,权限管理,站点管理,访客管理。
还有一个是统计部分,包括在线人数统计,综合数据统计,单日流量统计等。
3.2统计网站识别
本系统由于要对多个网站进行统计,所以必须区分访问不同站点的访客。
每个网站都由系统生成唯一的编号,通过让不同的网站引用名为该网站编号的图片,就能区分出是来自哪个网站的访客。
3.3页面识别
一个网站包含多个页面。
区分访客对不同页面的访问对统计来说意义重大。
在图片请求Request中的Referer包含引用图片的网页的网址。
通过它不仅能区分访客访问什么页面,还能判断是否是属于某网站域名下的URL,以过滤第三方引用图片造成的Request。
3.4访客识别
区分不同的访客是统计系统的关键所在,一般认为一个IP代表一个访客。
但是当多个内网访客共用一个外网IP时,就会造成只有一个访客的假像。
通过基于Cookie的会话(session)机制,就能区分以浏览器客户端为单位的用户。
3.5停留时间
Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存有会话有关的任何信息。
因此需要依赖Ajax技术,由客户端每隔数秒想服务器发送Request,以维持状态的持续性。
当关闭页面时,Request发送就会停止,由此可以确定访客的停留时间.
第4章系统设计
4.1数据库关系结构图
单向箭头表示多对一关系,双向箭头表示多多对多关系。
图4.1数据库结构关系示意图
4.2数据库表结构
4.2.1基本表
1、访客表描述
表4.1访客表描述
字段名
含义说明
别名
类型
允许空
是否主键
是否外键
id
唯一标识
integer
否
是
addr
IP地址
IP
char(15)
browser
浏览器名
浏览器
varchar(30)
version
浏览器版本
varchar(20)
os
操作系统
os_version
操作系统版本
session
会话标识
varchar(32)
refere
引用路径
路径
varchar(200)
start
访客访问时间
访问时间
datetime
end
访客离开时间
离开时间
agent
用户代理信息
用户代理
varchar(300)
website_id
网站标识
2、网站表描述
表4.2网站表描述
name
网站名
url
网站网址
URL
user_id
用户标识
3、用户表描述
表4.3用户表描述
username
用户名
first_name
名字
last_name
姓氏
email
E-mail地址
varchar(75)
password
帐号密码
密码
varchar(128)
is_staff
是否职员
职员状态
bool
is_active
是否可用
有效
is_superuser
是否超级用户
超级用户状态
last_login
最后登陆时间
上次登录
date_joined
帐号注册时间
加入日期
4、用户组表描述
表4.4用户组表描述
组名
5、权限表描述
表4.5用户权限表描述
权限名
6、消息表描述
表4.6用户消息表描述
message
text
4.2.1关系表
1、用户组和权限关系表
表4.7用户组和用户权限关系表描述
group_id
用户组标识
permission_id
权限标识
2、用户和用户组关系表
表4.8用户和用户组关系权限表描述
3、用户和权限关系表
表4.9用户和权限表描述
第5章系统实现
5.1访客记录的实现
主要从客户端浏览器的请求中获得访客的IP地址,浏览器信息,操作系统信息,浏览时间,浏览页面。
图5.1数据库结构关系示意图
统计服务器从浏览器客户端的Request中获取HTTP_USER_AGENT,REMOTE_ADDR,HTTP_REFERER。
浏览器客户端每数秒发送一个请求以维持长连接状态。
5.2管理界面的实现
5.2.1注册页面
在该页面注册的用户为普通用户,具有USERS组权限,即添加网站,修改网站,删除网站,查看统计。
图5.2注册页面
5.2.2登录页面
这是系统的唯一接口,所有用户都要在这登录才能进行下一步操作,需要客户端浏览器支持Cookie。
图5.3登录页面
5.2.3超级用户页面
超级用户能对所有用户,用户组,网站,访客数据进行所有权限管理。
图5.4超级用户页面
5.2.4网站管理
在网站管理页面中,可以进行网站的添加删除和修改。
网站信息包括网站名,网站的URL。
其中网站的URL必须保证其可访问性。
图5.5网站管理页面
5.2.5访客信息
访客中包含访客的IP,浏览器,操作系统,访问时间,离开时间。
以及按访问时间,浏览器,操作系统分组查看信息。
只有超级用户才能对访客信息进行添加删除修改。
图5.6访客管理页面
5.2.6用户管理
用户管理只有超级用户用户才能访问,可以添加删除用户,及修改用户的用户名,密码,名字,姓氏,E-mail地址,职员状态,有效性,权限,用户组。
图5.7用户管理页面
图5.8用户修改页面
5.2.7用户组管理
用户组管理只有超级用户用户才能访问,可以添加删除用户组,及修改用户组的对各个表的操作权限。
图5.9用户组管理页面
图5.10用户组管理页面
5.3统计界面的实现
5.3.1在线人数统计
在线人数为当前15分钟,10分钟和5分钟内浏览某网站的访客数。
其中uv代表独立用户(UniqueVisitor)。
图5.11在线人数统计
5.3.2综合统计报告
综合统计中包含pv,uv,ip以天为单位的数据,其中PV代表页面访问量,UV代表独立访客,IP代表独立IP。
图5.12综合统计报告
5.3.3单日统计报告
统计某日内的以小时为单位的pv,uv,ip总数。
图5.13单日统计报告
第6章系统测试
6.1功能测试
6.1.1链接测试
链接是web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。
链接测试可分为三个方面。
首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;
其次,测试所链接的页面是否存在;
最后,保证web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的url地址才能访问。
链接测试可以自动进行,现在已经有许多工具可以采用。
链接测试必须在集成测试阶段完成,也就是说,在整个web应用系统的所有页面开发完成之后进行链接测试。
6.1.2表单测试
当用户给web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。
在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。
例如:
用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。
如果使用了默认值,还要检验默认值的正确性。
如果表单只能接受指定的某些值,则也要进行测试。
只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。
6.1.3cookies测试
cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用cookies访问了某一个应用系统时,web服务器将发送关于用户的信息,把该信息以cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
如果web应用系统使用了cookies,就必须检查cookies是否能正常工作。
测试的内容可包括cookies是否起作用,是否按预定的时间进行保存,刷新对cookies有什么影响等。
6.1.4设计语言测试
web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的html等。
当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。
除了html的版本问题外,不同的脚本语言,例如Java、JavaScript、activex、vbscript或perl等也要进行验证。
6.1.5数据库测试
在web应用技术中,数据库起着重要的作用,数据库为web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。
在web应用中,最常用的数据库类型是关系型数据库,可以使用sql对信息进行处理。
在使用了数据库的web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。
数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。
6.2性能测试
6.2.1连接速度测试
用户连接到web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。
当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。
如果web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。
而且,连接速度太慢,还可能引起数据丢失