Хранение корзины покупок в сессии - PullRequest
7 голосов
/ 18 ноября 2008

Я знаю, что общее мнение о такой информации, как элементы корзины покупок, заключается в том, чтобы хранить их в сеансе. Но как насчет объектов, принадлежащих пользователю, которые могут быть изменены другими пользователями? Скажем, например, сайт, похожий на eBay. Если вы сохраняете «элементы» пользователя в сеансе, которые содержат текущую сумму ставки, а другой пользователь приходит и размещает ставку для этого элемента, вам придется обновить как элемент в базе данных, так и элемент в сеансе, не так ли?

В подобных случаях это единственные параметры, которые можно сохранить в сеансе и обновлять всякий раз, когда любое другое действие, предпринимаемое другим пользователем, влияет на значения сеанса человека или сохраняет все в базе данных и извлекает его каждый раз (может стоить дорого, если, скажем, у вас есть ставки отображаются на боковой панели каждой страницы).

Ответы [ 2 ]

6 голосов
/ 18 ноября 2008

Я бы сохранил все это в базе данных и получал бы это каждый раз. В зависимости от волатильности данных кэширование на несколько секунд может быть в порядке. Самая большая проблема состоит в том, чтобы сохранить эти два согласованных.

Я думаю, что каждый раз получать данные не так дорого, как вы думаете. Базы данных очень эффективны, если вы ищете на основе ключа. Я бы ошибался на стороне простоты (хранить в БД и извлекать), пока проблемы с производительностью не проявятся под нагрузкой (то есть в нагрузочном тестировании).

Если это будет всего несколько раз, вы можете использовать кэш приложений (если у вас не более одного рабочего процесса / сервера) и убедиться, что БД и кэш остаются синхронизированными.

4 голосов
/ 18 ноября 2008

Я бы лично сохранил его в базе данных. Во-первых, потому что ваши данные там намного безопаснее, и это облегчает обмен в случае, если вам нужна веб-ферма. Кроме того, вам не нужно иметь данные на каждой странице. Просто когда пользователь заходит в корзину. Другим преимуществом сохранения его в базе данных является то, что вы можете позже проанализировать то, что люди добавляют в корзину, но не покупают на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...