O mais simples O jeito é rastrear a última vez que alguém fez login. Quando eles voltam para visitar, tudo o que foi atualizado desde então é obviamente "novo".
No entanto, isso tem alguns problemas, já que o logout marca efetivamente todos os itens como lidos.
A única outra maneira que eu poderia pensar em fazer isso seria manter uma tabela contendo todos os tópicos e a última postagem naquele tópico que cada usuário viu.
user_id thread_id post_id
1 5 15
1 6 19
Com essa informação, se houver uma postagem no tópico 5 com um ID maior que 15, você saberá que há postagens não lidas lá. Atualize esta tabela apenas com o post_id da última postagem nessa página . Isso significa que se houver 3 páginas de novas postagens e o usuário visualizar apenas a primeira, ele ainda saberá que há postagens não lidas.