关于网站流量统计的问题

浩子 2009-07-29 03:09:00
目前我正在考虑如何为一个大型的网站做一个流量统计,请有这方面经验的兄弟提点建议。

网站的日流量可能会在10万到100万间,要求肯定也就是稳定、高效。

我想,要做这个统计,ASP.NET的做法应该是在Global中直接对Application和Session的两个事件进行操作,在小数据量的情况下,应该是很容易的,但如果数据量大,会有什么样的结果呢?访问记录的保存可能就成了一个问题,于是我也考虑了先写XML文件,然后每天晚上定时更新到数据库中的做法(我有服务器的控制权,写一个后台程序是可行的),但这样写文件我担心也会出现并发问题。

考虑到这么大的记录量,我决定将这个记录的库和网站的应用数据库分离,这样如果真有大的负担,到时也方便移植到一台专用服务器上来进行处理,因为我不能因为这个业务而影响网站其他功能的运行速度。

还有一点,用Session_Start好像每个用户只会触发一次吧,如果我想对每个页面的访问量进行统计又有何妙法吗?如果在每个页面中去加一段代码的做法好像很不优雅。

谢谢。
...全文
806 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩子 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 jasondct 的回复:]
帮你顶  关注中
[/Quote]

jasondct 2009-07-30
  • 打赏
  • 举报
回复
帮你顶 关注中
浩子 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 igelf 的回复:]
流量还是访问量??
[/Quote]

主要是指访问情况,比如访问时间,IP,等,谢谢参与。
igelf 2009-07-30
  • 打赏
  • 举报
回复
流量还是访问量??
我家有奥特曼 2009-07-30
  • 打赏
  • 举报
回复
up and study
浩子 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xianao16888 的回复:]
前台记录,用一个后台处理程序来进行统计.
[/Quote]

我现在就是在讨论前台记录的方法问题,谢谢参与。
浩子 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 winner2050 的回复:]
直接保存每次访问网页url 还有其他信息进入数据库就得了。

还要保存到xml,万一有IO冲突呢??

别以为不用数据库就很快,那么谁还辛辛苦苦的开发数据库啊。
[/Quote]

谢谢你的回复,关于你的回复我提一下我的想法。

我考虑写XML文件不是说XML比数据库快,而是因为这样做不会影响现有数据库的性能,我想,本身网站的数据库就存在一定的承受能力了,而我们又加入如此频繁的写操作,肯定会对原有网站的访问带来影响的。

你提的IO冲突问题,我不知道会不会产生,我打算每天一个XML文件,凌晨1点,就由后台程序将昨天的XML进行批处理入库,XML文件的创建也有后台完成,每次导入一天的数据后,就创建三天后的XML文件,这样就保证了文件不需要网页来创建

还请大家继续提出自己的想法,共同进步。
夏脑 2009-07-30
  • 打赏
  • 举报
回复
前台记录,用一个后台处理程序来进行统计.
woying5510 2009-07-30
  • 打赏
  • 举报
回复
关注中...
winner2050 2009-07-30
  • 打赏
  • 举报
回复
直接保存每次访问网页url 还有其他信息进入数据库就得了。

还要保存到xml,万一有IO冲突呢??

别以为不用数据库就很快,那么谁还辛辛苦苦的开发数据库啊。
HDNGO 2009-07-30
  • 打赏
  • 举报
回复
10W不算大型吧
gaijf 2009-07-30
  • 打赏
  • 举报
回复
这里讨论一下

http://topic.csdn.net/u/20090728/13/e7b3732f-6f1b-4b3d-86fb-5b4645a6e9da.html
wangsky2 2009-07-30
  • 打赏
  • 举报
回复
ding
gaijf 2009-07-30
  • 打赏
  • 举报
回复
ding
浩子 2009-07-30
  • 打赏
  • 举报
回复
顶上去
windinwing 2009-07-30
  • 打赏
  • 举报
回复
httpmodule可以,不过你要把统计分开,还是独立的服务器比较好,一般来说,使用js统计的全一点,
js在调用服务器的统计脚本
dzpzds 2009-07-30
  • 打赏
  • 举报
回复
学习
浩子 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 zyug 的回复:]
不知道BeginRequest事件有没有实例化Page不过你可以写在其它的管道里,真不行就给它先注册一个事件
[/Quote]

谢谢,我先试着做吧,明天结贴,呵呵。
超维电脑科技 2009-07-30
  • 打赏
  • 举报
回复
学习了
zyug 2009-07-30
  • 打赏
  • 举报
回复
不知道BeginRequest事件有没有实例化Page不过你可以写在其它的管道里,真不行就给它先注册一个事件



void Application_BeginRequest(object o, EventArgs e)
{
if (HttpContext.Current.Handler is Page)
{
Page p = HttpContext.Current.Handler as Page;
//注册你的脚本
p.PreRender += new EventHandler(
(t , ee) =>
{
if (HttpContext.Current.Handler is Page)
{

Page pp = HttpContext.Current.Handler as Page;
//注册事件
//pp.ClientScript.RegisterStartupScript();
}
}
);

}
}



这样一定没问题
加载更多回复(25)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧