0

我使用 PostgreSQL 在 PHP 中编写了一个简单的论坛。该论坛由许多包含主题的子论坛(或类别,如果您喜欢)组成。我有一个表格,用于存储用户最后一次访问主题的时间。它是这样的:user_id、topic_id、时间戳。

通过比较最后一次主题回复的时间戳和最后一次用户访问的时间戳,我可以轻松确定哪些主题应该标记为未读。

我的问题是:如何有效地确定哪些子论坛(类别)应标记为未读?我想出的是:每次用户访问一个主题时,更新访问时间戳并检查当前子论坛中的所有主题是否已读或未读。如果它们都已阅读,则将子论坛标记为用户已阅读。否则,将其标记为未读。但我认为必须有另一种方式。

先感谢您。

4

1 回答 1

1

有很多方法(比如你的方法)可以实现类似的行为,因为你提到效率我会认为性能很重要。

我之前处理这个问题的方式根本不涉及数据库来处理未读内容。考虑到这一点,我的建议是:

  1. 在第一次访问时,仅将比 3 天更新的主题标记为“未读”
  2. 当用户浏览主题时,开始将主题 ID 和线程的 LastUpdate 扔到客户端上的 cookie 中
  3. 当论坛页面加载时,检查 cookie,如果线程有任何更新,这个代码和 cookie 处理可以很容易地用纯 javascript完成。
  4. 如果客户离开网站整整一周,没问题,他会将超过 3 天(首次访问规则)的所有内容视为未读。

ps:这100%与一个人知道他没读过的东西有多重要有关。在我的建议中,这不是关键,因为它不是 100% 可靠的(毕竟我们没有使用数据库/适当的持久性)

于 2010-02-17T21:49:48.520 回答