ASP.. NET和c#页面视图计数器:使用数据库

本文关键字:计数器 数据库 视图 NET ASP | 更新日期: 2023-09-27 17:49:27

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

会有很多问题,我想有一个页面浏览量计数器为每个问题。

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

如果我创建一个TABLE Question_Views就很简单了每个问题都排一排。

就像这样。

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

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

如果我需要考虑IP地址,这种方法是错误的,对吗?

ASP.. NET和c#页面视图计数器:使用数据库

这听起来很简单,但如果你想要一个精确的计数器,那就不容易了。
你有

  • 读取和索引您的页面的bot,无论是已知的还是未知的
  • 禁用cookie和/或禁用javascript的用户
  • 谷歌和必应从您的网站捕获图像的实时预览
  • 反复加载页面进行刷新的用户
  • 企业防火墙后的用户,具有共同的ip。
  • 由于使用动态ip连接而更改ip的用户
  • 试图操纵数据的攻击者。

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

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

  1. 访问吗?
  2. 游客吗?
  3. 页面浏览量?
  4. 唯一页面浏览量?

点击、访问量、访客、网页浏览量和唯一网页浏览量之间的差异对你如何衡量浏览量至关重要。

如何识别这是一个访问者,而不是一个机器人,或者一个试图操纵计数器的攻击者,这也是至关重要的?

一个想法是跟踪所有参数,并显示唯一的页面浏览量。一个用户可以算作一个唯一的页面视图,即使他在cookie的会话中看到该页面10次。当会话到期,用户再次访问时,例如,如果他在60分钟后没有会话,则再次计数。

这里的困难是找到所有的机器人,以及那些看到一个页面就离开的"假用户"。

这当然要视情况而定。是否希望同一用户刷新的页面算作两次页面浏览量?如果用户每小时看到两次相同的页面会怎么样?还是一天两次?

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

另外,不要使用IP地址做任何事情。