Все остальные предметы являются хорошими предложениями.Еще одно: не используйте состояние сеанса, если оно вам абсолютно не нужно.
Хранение сеанса в базе данных (как правило) является плохой идеей по нескольким простым причинам:
Типичное использование сеанса - избавление от необходимости загружать общие данные с сервера базы данных несколько раз.Если сеанс хранится на сервере базы данных, то, на самом деле, вы действительно мало чего добились.
Сессия должна быть сериализована и десериализована для каждого выполнения отдельной страницы.Это означает, что данные сеанса должны быть получены с сервера и записаны на сервер при каждой загрузке страницы независимо от того, используете ли вы их или нет.
По моему опыту выгораздо лучше обслуживать данные из сервера базы данных, когда они вам действительно нужны.В большинстве случаев люди помещают все виды короткоживущих данных в сессию просто потому, что думают, что решают проблему с производительностью, а на самом деле они ухудшают ее.
Более того, если вы ограничите объем данных (произнесите имя пользователя, имя или что-то в этом роде), затем вы можете сохранить это на стороне клиента с зашифрованными файлами cookie и вообще не беспокоиться об этом.
MemCache - один из вариантов;но опять же, я серьезно посмотрю на использование вашей базы данных и выясню, сможете ли вы сначала настроить параметры запросов и схем.