Подтвердить что ты не робот

Корзина для не зарегистрированных пользователей

Я занимаюсь созданием веб-сайта, который включает в себя корзину покупок. Существует два основных требования:

  • Пользовательский опыт ребята хотят, чтобы логин/аутентификация был последним шагом во всем рабочем потоке. Пользователь получает все покупки и просят войти в систему только во время проверки.

  • Корзина не должна истекать (даже при закрытии браузера), если пользователь (зарегистрированный или нет) не выполняет проверку.

В приведенном выше контексте у меня есть следующий вопрос относительно поддержания состояния тележки:

Должен ли я идти с сеансами на основе файлов или базы данных? Пожалуйста, имейте в виду, что это будет для незарегистрированных пользователей. Мое опасение заключается в том, что у меня будет много записей в базе данных.

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

Что бы вы сделали в этом случае? Я был бы очень признателен за ваши ответы.

4b9b3361

Ответ 1

  • Отслеживание пользователя. Использовать GUID закодирован в файл cookie с nYear expiry.

  • Хранение торговой сумки. Вы не хотите хранить сумку в cookie, в основном из-за ее возможного размера. Это оставляет возможность перенести его на носитель и извлекать его из среды. Использование чего-либо, кроме базы данных для этого, будет напоминать возвращение во времени, базы данных превосходят хранение и извлечение данных.

  • Управление сумкой для покупок. Сейчас вопрос о вашей схеме, во-первых, если ваши будущие запросы против сумок в базы данных (т.е. сколько покупок сумки содержат элемент x), вы, вероятно, хочу традиционную реляционную схемы. Однако у этого есть накладные расходы с точки зрения вставки. обновление, выбор (и объединение) и удаление (в какой-то момент у вас будет сумки, которые никогда не будут использоваться снова но занимают драгоценный диск пространство). С загруженным сайтом это справедливые немногие Трараны в секунду, но любая база данных должна иметь возможность справиться. Если вам не нужно запрашивать сумки в базе данных, то вы можете сохранить его как XML. Просто сериализуйте пакет и выгрузите его в таблицы с ПК как GUID как хранится в cookie пользователей. Эта будет намного быстрее, чем традиционной схемы, плюс вы могли бы всегда разорвать XML в будущее, если возникло требование для реляционной схемы.

Это то, что мы делаем (Xml Bag), и у нас есть миллион + клиентская база.

Ответ 2

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

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

Обратите внимание, что сеанс базы данных будет действителен только до тех пор, пока cookie, на который он привязан, находится на компьютере пользователя. Если пользователь возвращается в магазин из другого браузера, они не найдут свою сессию. Если два человека используют один и тот же компьютер, они найдут друг друга. Надеюсь, никакие потенциально неловкие предметы будут в корзине...

Ответ 3

Храните файлы cookie в файле AnonymousSessionID, с которым вы связываете корзину в базе данных.

Затем у вас будет задача планировщика, чтобы стереть анонимные сеансы через некоторое время (например, день). Это позволит вашей базе данных очистить заброшенные сеансы.

Если пользователь регистрируется, вы повторно привязываете свою корзину покупок к своей учетной записи. Если пользователи делают заказ, вы опорожняете свою корзину.

Ответ 4

С этими спецификациями я бы пошел с состоянием сеанса базы данных. Но вы должны очень внимательно прочитать, как обрабатывается состояние сеанса на вашем веб-сервере. Поскольку вы хотите, чтобы иметь возможность оживить состояние к правильному человеку.

Ответ 5

Если вы используете ASP.NET здесь, что мне нужно (делать):

  • используйте Профиль, чтобы как можно скорее зафиксировать электронную почту пользователей (чтобы отправить их по электронной почте, если они не заполняют заказ). вы можете включить анонимные свойства профиля, которые сохраняются в базе данных aspnet, даже если пользователь действительно не зарегистрировался на самом деле.
  • вставьте мешок XML, представляющий заказ в сеанс. Это сохраняется в базе данных с регулярным идентификационным идентификатором.
  • сохранить идентификатор корзины в ASP.NET Profile. таким образом, когда сессия закончится, вы можете просто перезагрузить ее из идентификатора в профиле. это имеет то преимущество, что пользователь никогда не видит идентификатор корзины в файле cookie, и вы можете легко связывать записи между базой данных членства/профиля и магазином, который вы используете для своих заказов.

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

Ответ 6

Я думаю, что у вас есть некоторые надежды на управление, или, может быть, вы не совсем поняли требования.

  • Пользовательские ребята хотят, чтобы логин/аутентификация был самым последний шаг во всем рабочем потоке. пользователь получает все магазины и просят войти в систему только во время проверка.
  • Корзина не должна истекать (даже при закрытии браузера) если пользователь (зарегистрированный или нет) выезд.

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