Я бы рекомендовал ПРОТИВ хранить эти сообщения либо в базе данных, либо в сеансе по одной простой причине: вкладки. (Ну, действительно, природа HTTP без сохранения состояния.)
Подумайте о человеке, у которого есть несколько вкладок, открытых в разных разделах вашего сайта. Этот человек выполняет какое-то действие и во время загрузки переключается на другую вкладку и щелкает ссылку. Если вы храните сообщения в сеансе / базе данных, а вкладка перехода - это страница, на которой также могут отображаться эти сообщения, пользователь теперь вступил в состояние гонки, где в зависимости от того, на какой запрос сервер отвечает первым, сообщения могут показать, где они не были предназначены.
Теперь, есть некоторые ситуации, когда это на законных основаниях может не иметь значения, но в некоторых случаях это может быть очень запутанным.
Размещение сообщений в запросе не должно быть таким плохим, как кажется на первый взгляд. Возможно, вы могли бы сохранить все сообщения, которые вы хотите отобразить в базе данных с числовым (или, для бонусного обфускации, хеш) ID, и передать список идентификаторов в строке запроса. Это делает строку запроса короткой, и все, что вам нужно сделать, это отслеживать, какой идентификатор соответствует какому сообщению в вашем коде.