【问题标题】:How to show how many people have viewed a post如何显示有多少人查看了帖子
【发布时间】:2022-03-13 17:55:05
【问题描述】:

我有一个BBS论坛,我只是想知道如何计算帖子的浏览量?

我需要考虑注册用户和访问者。

我正在考虑计算 IP,但许多用户或访问者可能来自同一个 IP。然后我正在考虑计算 GA(正如 Google 所说的每个 _ga 持续 2 年)。

我搜索了一段时间,但没有找到任何示例。

【问题讨论】:

  • 您需要一种特定的方式来跟踪访问者吗?或者您想跟踪页面加载了多少次?
  • @Jabberwocky 我需要知道有多少用户/访问者阅读了帖子。

标签: asp.net asp.net-core


【解决方案1】:

您的问题过于宽泛,但一般来说,您需要某种中间件作为请求管道的一部分运行并更新某些数据存储。如果您希望对同一个人的多个视图进行折扣,那么您将需要某种鉴别器。这就是IP地址之类的地方,但正如您所提到的,它并不完美,最终可能会将多个人集中到一个单元中。最好的方法是通过 cookie 设置标识符,就像 GA 对其跟踪 cookie 所做的那样。该标识符可以是任何东西;它应该是唯一的 cookie。 Guid.NewGuid() 应该足够了。然后,您只需将其与视图记录一起记录,并在保存视图的新记录之前,首先检查具有该 cookie 值的记录(如果存在)。

需要记住的几点:

  1. 与其更新单个 ViewCount 列或其他内容,不如在外部表中进行跟踪,该表记录所访问的 URL 和任何区分信息,例如跟踪 cookie 标识符。当您需要获取完整的视图计数时,只需从该表中聚合计数即可。这将消除您对并发性的大部分担忧。否则,您必须将写入门控到 ViewCount 属性或其他任何内容,这将为您的应用程序创建阻塞点。

  2. 即使是跟踪 cookie 也不完美。一方面,它将是特定于设备的,因此如果同一用户同时从桌面设备和移动设备访问,甚至只是同一设备上的多个浏览器访问,他们都会被计算在内。但是,这里真的没有更好的选择。如果您确实有一个实际登录的用户可以使用,您可以将其用作潜在的鉴别器以获得更准确的计数,但当然,您仍然需要匿名用户的后备选项。

【讨论】:

  • 嗨,克里斯,感谢您的回答。我正在考虑使用 Sql View,但这个想法(stackoverflow.com/questions/56137189/…)失败了。我更喜欢使用视图的原因是我不想获取帖子列表,然后迭代每个帖子以调用 getViews()。你有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2013-09-03
  • 2014-03-03
  • 2013-01-05
  • 1970-01-01
相关资源
最近更新 更多