最近未读消息的蓝色数字出现异常(本不该出现)?

这在 Meta 上是非常新的(今天?)。我在“最新”里有几个话题显示有蓝色数字的未读消息(我记得以前只有 1 条未读),但我不明白为什么。我没有被提及,话题处于“普通”模式,既未被关注也未被追踪。我甚至怀疑这些是我从未打开过的话题。我在点击之前刚检查过“未读”部分,它们并不在那里。
有人也遇到这种情况吗?

(附注:我此刻没喝醉)

如果不了解导致问题的具体话题,调试起来会比较棘手。如果您再次遇到该问题,能否记录下是在哪些话题上发生的?

根据您在 Discourse 上的设置,在“最新”列表中,过去几天内创建的话题标题后应显示一个蓝点。这些话题也应列在您的“新话题”列表中。如果您在“最新话题”列表中看到带有数字的蓝色图标,这表示您正在关注或追踪的话题中出现了新帖子。这些话题也应出现在您的“未读”列表中。如果您阅读某个话题长达 4 分钟,系统会自动将其设置为“关注”,因此这可能是发生的情况。

这两个链接:Could Discourse offer a StackExchange-like SSO/Federated login service?WordPress comments are showing 当时都显示了“1 条未读”的提示。这发生在我创建当前这个主题之前。

关于“蓝点”的情况我不太确定,因为我没有太关注这方面。
我理解您所说的所有内容,那确实是我原本的想法。我(相当)确定那个蓝色图标本不应该出现。它们并没有因为停留时间而被自动标记为“已关注”。正如前面所说,我相信我从未打开过它们,之后我也检查过,这两个主题的订阅状态都是“普通”。

在我今天之前访问 Meta 时,我记得有一个主题也出现了这种“问题”。我没有仔细查看,所以不记得具体是哪一个,也不完全确定。但正如我在消息开头描述的那样,我相当确信那确实发生了,而且本不该如此。我想在今天之前我从未见过这种情况。希望这些信息能有所帮助。

我刚刚又遇到一个话题显示 1 条未读消息(蓝色数字),这本来不该发生(或者我还不明白为什么会这样)。这个链接:https://meta.discourse.org/t/email-for-specific-category/161547。这种情况并不频繁,只是偶尔出现。看起来它总是只显示 1 条未读消息(我还不完全确定这一点,我会继续观察)。我尝试对比了迄今为止发生过的三个话题,但没发现任何明显的规律。

难道没人注意到这个问题吗?

(或者这与日期/时间有关?看起来它似乎正好在上次发生的一周后又出现了?)

经过一番思考,这可能是当我把浏览器一直停留在“最新”页面,然后返回并点击蓝色条上的“查看 x 条新或更新的话题”时出现的。这种情况可能只发生在周日凌晨短时间内发布消息的场景中!?

我还不确定(我会继续验证这个假设),但根据我的观察,这似乎说得通。也许很少有人会长时间让浏览器停留在“最新”页面(而我恰好会这样做),所以这可能解释了为什么这个问题很少被注意到。

如果你想尝试复现这个问题,@simon,你可以试试:在接下来的周末让浏览器一直停留在“最新”页面,过一段时间后点击蓝色条查看新消息。如果我猜对了,也许就会发生。

我继续补充:目前的情况是,这似乎与在浏览器中将 meta 页面保持在“最新”状态,并随时间推移不断点击蓝色条查看新消息有关。有趣的是:这次只出现在一个话题中,我进入该话题后通过后退按钮退出,之后又出现了更多类似情况(确实每个话题每次都只显示一个蓝色数字“1”),但只要在浏览器中点击“刷新页面”,这些未读标记就消失了。

所以,这可能发生在几天没有刷新页面、持续使用该功能的情况下(除非问题出在我这边!?)

我偶尔会遇到这个问题。当它再次出现时(“正常”状态下的蓝色数字,以及一个我认为之前未曾见过的主题),我搜索了这个话题,想了解这些数字究竟代表什么。

这似乎是一个 bug(它代表“未读”消息,但你甚至没有跟踪或关注这些主题!你甚至从未进入过它们)。现在,我也遇到了同样的情况:这种情况相当“偶然”。最好能找出其来源并加以解决。

这是我昨天收藏的一篇帖子。蓝色圆圈表示“新”,灰色圆圈表示“未读”:

但这里有一个来自 Meta 的说法,他们将蓝色圆点中的数字称为“未读”(数字 1 显示在蓝色圆点中):

您的未读主题将显示在这里。

默认情况下,如果您满足以下条件,主题将被视为未读,并显示未读计数 1:

  • 您创建了该主题
  • 您回复了该主题
  • 您阅读该主题超过 4 分钟

或者,如果您已通过每个主题底部的通知控制将主题明确设置为“跟踪”或“关注”。

请访问您的 偏好设置 进行修改。

我想我有点跑题了……

还有另一件事,看似完全无关,但似乎有些关联:这几天我发现,在我关注(订阅)的一些主题上,出现了大量未读消息。这些蓝色圆圈出现在我确实关注的主题上,与上面描述的 bug 不同。

“未读帖子”的数量远远高于主题中实际消息的数量。我怀疑这些主题中可能删除了相应数量的消息!?而那些已删除的消息是否仍被标记为“未读”,尽管它们实际上已不存在?我最近遇到的一个例子是这个主题:https://meta.discourse.org/t/discourse-signatures/42263(系统显示有 92 条未读消息,但其中实际上只有 4 条回复)。

我想,这应该是另一个与“蓝色圆圈”/“未读消息”相关的 bug。

是的,当存在删除操作时,计数将不准确。

难道有一天不值得修复这个问题吗?即在删除时处理“未读”计数。您的回答似乎暗示不行:confused:

当前的实现方式让人一眼就能看出发生了大规模删除,而且有点奇怪(系统会通知您有 x 篇帖子待读,但这些帖子您其实已经读过了,甚至已经不存在了)。

这是一个非常复杂的变更,如果不付出极高的性能代价,我们无法修正这个计数。

首页必须查看其显示的每个主题中的每一篇帖子,才能获得 100% 准确的计数。这开销过大,会导致首页加载非常缓慢。

说得通。
我不太清楚具体是如何实现的,所以如果我的理解有偏差,还请见谅。在我的设想中,当发生删除操作时,可以在服务器端进行某种处理,自动修正所有用户的计数以反映这些删除。我理解没有必要每次检查“首页”上是否可能有被删除的帖子,毕竟删除操作相对较少(新帖才是常态)。

所有计数都是动态计算的。

  1. 我们知道你阅读到的帖子编号(post_number)。
  2. 我们知道该主题中最大的帖子编号。
  3. 关键信息:我们倾向于不破坏现有指向该主题的超链接,因此我们绝不会重新编号帖子。即使你在删除了 1000 个帖子之后发布新内容,它的帖子编号仍然是 1001。

我们不会为每个用户在服务器上存储实际计数的缓存。如果这样做,每次发布或删除帖子时,我们都可能需要执行代价高昂的重新计算。例如:

  • 帖子 1
  • 帖子 2 被删除
  • 帖子 3
  • 帖子 4 被删除
  • 帖子 5

在这种实现方式下,你必须在每次删除时统计所有内容,并为每个用户保持缓存同步。这种会计处理的成本非常高。

感谢这些解释 @sam

这看起来“没那么糟糕”(我想大家都明白,计数是包含已删除帖子的)。不过,我现在有些困惑,不明白这如何导致了我所看到的情况。例如,我最后看到的“92 条未读帖子”。我不认为在我两次访问之间,有 92 条新帖子被创建又删除。

最大的问题是:当(最高帖子编号 - 最后已读帖子编号)的差值为负数时会发生什么?系统目前是否将该负数的绝对值显示为未读帖子?如果是,这正是需要修正的地方:不要将任何负数显示为未读消息。

问题出现在“最高帖子编号”实际上小于“你读到哪个帖子编号”的时候,因为最后一条或最后几条帖子被删除了。只要话题的最后一条帖子没有被删除,根据我对你的解释的理解,就不应该有任何问题。在我上面的例子中,我认为我们可能已经达到了“最高帖子编号”等于楼主(OP)的情况,因为除了话题的第一条帖子外,其他所有内容都被删除了。

我们对此做了防护。你不会看到蓝色气泡……我们不会显示 (-55)

例如:

  • 帖子 1
  • 帖子 2
  • 帖子 3   ← 你已读到这里
  • 帖子 4
  • 帖子 5

接下来:

  • 帖子 1
  • 帖子 2
  • 帖子 3   ← 你已读到这里
  • 帖子 4
  • 帖子 5

对你而言没有任何未读内容,也没有蓝色气泡。

接下来:

  • 帖子 1
  • 帖子 2
  • 帖子 3   ← 你已读到这里
  • 帖子 4
  • 帖子 5
  • 帖子 6

你显示有 3 条未读……实际上你只有 1 条,但这是当前实现的代价,无法通过任何简单方式改进。

@sam,我理解你的意思,你的解释也很合理且清晰,但这似乎与我在 Discourse 上看到的实际情况不符:confused:

最后一个例子:就在刚才,这个主题 Discourse BBCode 显示有 29 条未读帖子。我相当确定上次来这里(时间并不长)时没有任何未读消息,而现在我看到的是原帖(OP)加上仅 2 条来自 2 小时前的帖子(该主题总消息数为 3)。我不认为自从我上次访问以来有 27 条新帖子被创建并删除,难道有吗?(那将是一个简单的解释!)。能否请你查看一下?(如果不是,为什么会出现“29 条未读”的蓝色气泡?)

这是否与这类主题有关:“此主题的回复会在一个月后自动删除”?或者是否与用户开始关注该主题的时间有关?

我有点搞不清楚了 :wink:

@sam 仅告知一下,我这边关于这个话题(https://meta.discourse.org/t/discourse-calendar/97376)现在显示了一个包含 146 条未读消息的蓝色气泡,但根据你上面的解释,我无法理解这是如何发生的。我能想到的唯一可能是:当实际帖子被删除时,已读标记的位置会回退(我知道你说过并非如此。那我也不清楚了。但我知道大量删除会导致出现巨大的未读消息蓝色气泡)。

该主题下有 139 条已删除的回复,这肯定是原因所在。

我认为我们有一些标准化代码,当您的最后阅读帖子不存在时会重置最高阅读编号,我们可能会考虑对此进行调整。

很好,这确实就是重点所在。

再问一个简单的问题:我注意到另一个主题中删除了大约 200 条帖子,为什么不设置一个“归档”分类,将这些帖子移入其中的“已归档主题”,而不是直接删除呢?该分类可以默认排除在搜索之外,但保留在其中进行搜索的功能。这样既能保留过去的“知识”和讨论,让所有人都有权访问、搜索和查看,同时也达到了您想要的“清理”或“精简”效果。

让所有人继续访问这些消息的“成本”真的太高了吗?(顺便一问:你们是彻底删除了,还是内部仍然可以访问这些消息?也就是说,只是“公开”删除了?)

谢谢。