После чистки кэша прочитанные страницы снова отображаются как непрочитанные. А как еще хранить информацию о "прочитанности" - загонять в базу всю историю посещений данного участника? Несерьезно. Поэтому алгоритм простейший: есть страница в кэше - красим как прочитанную, нет - как непрочитанную. Если браузер автоматически чистит кэш (по времени или максимальному размеру) - именно такая картина и получится.