【问题标题】:ASP.NET and C# Page View Counter: Using a DatabaseASP.NET 和 C# 页面查看计数器:使用数据库
【发布时间】:2012-12-25 22:00:12
【问题描述】:

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

会有很多问题,我希望每个问题都有一个页面浏览计数器。

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

如果我只是创建一个 TABLE Question_Views,那真的很容易 并为每个问题设置一行。

类似的东西。

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

但是页面计数器会考虑 IP 地址吗?意思是,如果我打开第23题的网页,然后改天我也看这个题,是加1还是加2?

如果我需要考虑 IP 地址,这种方法有点错误,对吧?

【问题讨论】:

  • 你只有匿名用户吗?
  • 会有访客和注册用户。
  • 这是一个很好的方法。如果我正在做这样的事情,我会做的是,我不考虑注册或未注册的 IP 地址,并计为整个页面加载时的页面浏览量。

标签: c# asp.net


【解决方案1】:

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

  • 读取和索引您的页面的机器人,包括已知和未知的
  • 禁用 cookie 和/或禁用 javascript 的用户
  • Google 和 Bing 从您的网站上捕获图像以供上一个直播
  • 用户反复加载页面以进行刷新
  • 位于公司防火墙后且拥有共同 ips 的用户。
  • 因为使用动态 ip 连接而更改 ip 的用户
  • 试图操纵数据的攻击者。

仅此days YouTube remove billions 来自页面浏览量的虚假统计数据!

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

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

The difference between clicks, visits, visitors, pageviews, and unique pageviews 对您如何衡量观看次数至关重要。

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

一个想法是跟踪所有这些参数,并显示独特的页面浏览量。一个用户可以算作 1 次唯一的页面查看,即使是查看该页面 10 次对于有 cookie 的会话。当会话到期并且用户再次出现时,例如,如果他在 60 分钟后没有会话,那么您再次计算他。

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

【讨论】:

  • 总之,不要使用visitors,visitors...计数器?我相信。谢谢。
【解决方案2】:

当然,这取决于。您想要同一用户刷新页面算作两次页面浏览吗?如果一个用户每小时看到两次相同的页面呢?还是一天两次?

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

另外,不要将 IP 地址用于任何事情。而是通过 HTTP 会话识别您的用户。

【讨论】:

  • 假设我想设置一个限制,让用户不会多次查看页面以增加页面浏览量,这意味着我需要添加一个“User_ID”列,意味着我赢了'不再使用“Views”列,我将在查询中使用 COUNT 来获取查看次数,这很容易并且感觉不错,但是访问者呢?没有注册用户?
  • 那么,您需要识别您的用户(非注册用户仍然是用户。只要他们不清除 cookie,您就可以识别他们)并跟踪哪个用户看到了什么.我不得不承认,在大型网站上,这对于 SQL 数据库来说似乎不是一项好任务。
猜你喜欢
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2013-06-12
  • 2013-01-18
  • 1970-01-01
  • 2013-01-12
  • 2018-11-18
  • 1970-01-01
相关资源
最近更新 更多