корзина для незарегистрированных пользователей
Я в процессе создания веб-сайта, что включает в себя корзину. Есть два основных требования:
ребята из пользовательского опыта хотят, чтобы вход / аутентификация были последним шагом во всем рабочем потоке. Пользователь получает, чтобы сделать все покупки и просят войти только во время проверки.
корзина не должна истекать (даже при закрытии браузера), если пользователь (зарегистрированный или нет) не регистрируется.
в приведенном выше контексте у меня есть следующий вопрос относительно поддержания состояния тележки:
должен ли я идти с сеансами на основе файлов или баз данных? Пожалуйста, имейте в виду, что это будет для незарегистрированных пользователей. Я опасаюсь, что в конечном итоге у меня будет много записей в базе данных.
другой вариант - поместить содержимое корзины в зашифрованный файл cookie, но тогда есть ограничение размера файла cookie.
Что бы вы сделали в этом случае ? Я был бы очень признателен за ваши ответы.
6 ответов
отслеживание пользователя. Использовать GUID закодированный в cookie с nгод истечения срока действия.
хранение авоськой. Вы не хотите хранить сумку в печенье, в основном из-за его возможного размера. Это оставляет возможность persiting на средних и извлечение его из среды. Использование чего-либо, кроме базы данных для этого, было бы похоже на возвращение во времени, базы данных преуспевают в хранении и извлечении данных.
управляя вами хозяйственная сумка. Теперь вопрос о вашей схеме, во-первых, если ваш собираюсь быть запущена запросы против сумки в база данных (т. е. сколько покупок мешки содержат деталь x) вы, наверное, хотите традиционное реляционное схема. Однако это накладные расходы с точки зрения вставки. обновление, выбор (и присоединение) и удаление bag data (в какой-то момент у вас будет сумки, которые больше никогда не будут использоваться но забираем драгоценное диск пространство.) С оживленным сайтом, это справедливое несколько Traranactions в секунду, но любая база данных должна быть в состоянии справиться. Если вам не нужно запрашивать сумки в базе данных, затем вы можете сохранить его как XML. Просто сериализовать пакет и сбросить его в таблица, с ПК как GUID как хранится в файле cookie пользователей. Этот будет намного быстрее, чем традиционная схема, плюс вы могли бы всегда разрывайте XML в будущее, если возникнет требование для реляционного схема.
это то, что мы делаем (Xml Bag), и у нас есть миллион+ клиентская база.
Я бы пошел с базой данных управления по файлов сессий. Убедитесь, что у вас есть временная метка сеанса, чтобы вы могли в конечном итоге убить старые сеансы (если это было 12 месяцев, покупатель, возможно, не вернется за предметами, первоначально находящимися в корзине).
выполнение этого с базой данных вместо файлов облегчит в конечном итоге истечение очень старой информации.
обратите внимание, что сеанс базы данных будет действителен только до тех пор, пока файл cookie привязан к компьютеру пользователя. Если пользователь возвращается в магазин из другого браузера, он не найдет свою сессию. Если два человека используют один и тот же компьютер, они будет найти сеанс друг друга. Надеюсь, в корзине не будет потенциально неудобных предметов...
храните в cookies AnonymousSessionID, с которым вы связываете корзину покупок в базе данных.
тогда у вас будет задача планировщика для удаления анонимных сеансов через некоторое время (скажем, через день). Это позволит очистить вашу базу данных от заброшенных сеансов.
если пользователь регистрируется, вы повторно связать свою корзину покупок с их учетной записью постоянно. Если пользователи делают заказ, вы опустошаете их корзину.
с этими спецификациями я бы пошел с состоянием сеанса на основе базы данных. Но вы должны сделать некоторые тяжелые чтения о том, как состояние сеанса обрабатывается на вашем веб-сервере выбора. Так как вы хотите иметь возможность возродить состояние к правильному человеку.
Я думаю, у вас есть некоторые ожидания, чтобы управлять, или, может быть, вы не были ясны в требованиях.
- ребята пользовательского опыта хотят, чтобы логин / аутентификация были очень последний шаг во всем рабочем потоке. Этот пользователь получает, чтобы сделать все покупки и запрашивается вход только в момент проверка.
- корзина не должна истекать (даже при закрытии браузера) если пользователь (зарегистрированный или нет) выписывается.
в частности, анонимная, не вошедшая в систему корзина пользователя сохраняется? Это безумие. Убедитесь, что это не ожидание, и уточните его в своих проектных документах.
Если вы используете ASP.NET вот что я (о) должен сделать:
- использовать профиль захватить электронную почту потребителей как можно скорее (отправить их по электронной почте если они не завершают заказ). можно включить анонимные свойства профиля, сохраняемые в базе данных aspnet, даже если пользователь не зарегистрировался по-настоящему.
- вставьте XML-пакет, представляющий порядок в сеанс. Это сохраняется в базе данных с обычным идентификатором ИДЕНТИФИКАТОР.
- храните ID тележки в ASP.NET профиль. таким образом, когда сессия истекает, вы можете просто перезагрузить его из ID в профиле. это имеет то преимущество, что пользователь никогда не видит идентификатор корзины в файле cookie, и вы можете легко связать записи между базой данных членства/профиля и магазином, который вы используете для своих заказов
(Не пытайтесь сохранить порядок XML в профиле. я думаю, что это вопрос производительности. но теоретически ты мог ли я предположить)