Я бы использовал комбинацию сеанса и куки для регулирования сообщений, представляемых пользователю. Делая это, я бы уменьшил фактор раздражения для пользователей и показывал им сообщения как можно меньше раз.
В MVC я бы использовал частичное представление, которое вы можете отображать на всех ваших страницах, и его поведение не зависит от сайта. Или это должно быть с учетом контекста.
Edit:
Как уже упоминалось в комментариях, также может быть хорошей идеей хранить зависимую от пользователя информацию в базе данных. Это может позволить отображать сообщения для аутентифицированных / известных пользователей.
Мой оригинальный ответ был в основном нацелен на анонимных пользователей.
Для аутентифицированных пользователей у вас может быть таблица сообщений с битом чтения / не чтения или даже просто таблица push, где вы отправляете сообщения и удаляете их из таблицы, как только пользователь их увидит.
Вам может потребоваться система из 2 частей. Один для сообщений, отображаемых анонимным пользователям. Вторая часть предназначена для аутентифицированных пользователей об их личном профиле / событиях, связанных с ними или сайтом.