ASP.NET和C#页面查看计数器:使用数据库

时间:2012-12-25 22:00:12

标签: c# asp.net

我正在开发一个类似于stackoverflow.com概念的项目

会有很多问题,我希望每个问题都有一个Page View Counter。

我觉得最好的方法是使用数据库,因为问题的数量会很大,而且会随着时间的推移而增加。

如果我刚刚创建了一个TABLE Question_Views ,那将非常容易 每个问题都有一行。

像这样。

ID-----Question_ID------Views
1-------23--------------400
2-------24--------------301
3-------25--------------123

但页面计数器是否考虑了IP地址?意思是,如果我打开第23号问题的网页,然后另一天我也会查看这个问题,它会增加1还是2?

如果我需要考虑IP地址,这种方法有点不对吗?

2 个答案:

答案 0 :(得分:1)

当然,这取决于。您是否希望同一用户刷新页面以计为两次页面浏览量?用户每小时看两次同一页面怎么样?或者一天两次?

弄清楚你想要什么,然后它会更容易实现。

另外,请勿使用IP地址。相反,用HTTP会话识别您的用户。

答案 1 :(得分:1)

听起来很容易 - 但如果你喜欢一个准确的计数器,那就不是了

  • 机器人读取和索引您的页面,包括已知和未知
  • 已停用Cookie和/或已禁用javascript的用户
  • Google和Bing从您的网站上捕获图像以进行实时显示
  • 一次又一次加载页面以进行刷新的用户
  • 位于公司防火墙后面且具有常见ips的用户。
  • 因使用动态IP连接而改变ips的用户
  • 试图操纵数据的攻击者。

来自页面浏览量的这个days YouTube remove billions错误统计数据!

现在的问题是,你要测量什么?

  1. 访问?
  2. 访客?
  3. 网页浏览量?
  4. 独特的网页浏览量?
  5. The difference between clicks, visits, visitors, pageviews, and unique pageviews对于如何衡量观点至关重要。

    对于你如何识别访问者而不是机器人,或者试图操纵计数器的攻击者来说,这一点至关重要吗?

    一个想法是跟踪所有参数,并显示唯一的页面视图。一个用户可以算作一个唯一的页面视图,即使是查看页面的10次会话的cookie。当会话到期并且用户再次来到时,例如,如果他在60分钟之后没有参加会议,那么你再次计算他。

    这里很难找到所有的机器人,以及看到一页然后去的“假用户”。