Другой вариант, который у вас есть, и я уже видел, как это делалось ранее при установке vBulletin, - это сохранение разделенного запятыми списка просматриваемых идентификаторов тем на стороне клиента в файле cookie.
На стороне сервера, единственное, что было сохранено, это время предыдущего посещения пользователя. Система форума использовала это в сочетании с информацией в куки пользователя, чтобы показать «как прочитанное» для любой темы, где либо
- Дата последнего изменения (т. Е. Последнее сообщение) старше, чем предыдущий визит пользователя
- Идентификатор темы, найденный в файле cookie пользователя, как тема, которую пользователь посетил в этом сеансе.
Я не говорю, что это хорошая идея , но я подумал, что упомяну это как альтернативу - очевидный способ сделать это уже был указан в других ответах, т.е. хранить его на сервере сторона как таблица отношений (таблица «многие ко многим»).
Полагаю, преимущество заключается в том, что сервер хранит эту информацию меньше нагрузки.
Недостатком является то, что он связывает его с сеансом, поэтому после запуска нового сеанса все, что произошло до последнего сеанса, считается «уже прочитанным». Другим недостатком является то, что cookie может содержать только столько информации, и пользователь может просматривать сотни тем в сеансе, поэтому он приближается к пределу хранения cookie.