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

use*_*700 5 c# asp.net

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

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

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

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

像这样的东西.

ID-----Question_ID------Views
1-------23--------------400
2-------24--------------301
3-------25--------------123
Run Code Online (Sandbox Code Playgroud)

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

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

Ari*_*tos 1

这听起来很简单 - 但如果您喜欢精确的计数器,那就不容易了。
你有

  • 读取您的页面并为其建立索引的机器人,无论是已知的还是未知的
  • 禁用 cookie 和/或禁用 javascript 的用户
  • Google 和 Bing 从您的网站捕获图像以进行实时预览
  • 用户反复加载页面进行刷新
  • 位于公司防火墙后面并具有公共 IP 的用户。
  • 由于使用动态 ip 连接而更改 ip 的用户
  • 试图操纵数据的攻击者。

就在今天,YouTube从页面浏览量中删除了数十亿虚假统计数据!

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

  1. 访问量?
  2. 访客?
  3. 页面浏览量?
  4. 独特的页面浏览量?

点击次数、访问次数、访问者、综合浏览量和独特综合浏览量之间的差异对于您如何衡量浏览量至关重要。

对于您如何识别是访客而不是机器人或试图操纵计数器的攻击者也很重要?

一种想法是跟踪所有参数,并显示独特的页面视图。一个用户可以算作 1 个唯一的页面浏览,即使对于具有 cookie 的会话来说该页面浏览了 10 次。当会话过期并且用户再次到来时,例如,如果他在 60 分钟后没有会话,那么您将再次对他进行计数。

这里的困难在于找到所有的机器人,以及看到一页就走了的“虚假用户”。