Я только что увидел некоторые идеи о тележках для покупок от одноклассника У Лея. Я знаком с этим аспектом электронной коммерции, поэтому я выскочил, чтобы продемонстрировать свой стыд, и надеюсь, что это будет полезно некоторым коллегам. Изначально я хотел ответить на следующее, но оказалось, что писать нужно много, поэтому я мог бы просто написать это здесь. В будущем будет легче найти это самостоятельно. Вопросы: 1. Должны ли данные корзины храниться в базе данных?
Особенно мне хочется знать, как настоящие инженеры-программисты думают об этой проблеме в реальных проектах. После поиска в Google я нашел в нашем саду статью одного пользователя сети: «Корзина покупок должна быть модулем для временного хранения данных, и он хранил их в объекте Session». То, что сказал этот пользователь сети, имеет смысл, но мне не нравится такой подход. Если все будут хранить его в объекте Session и тысячи пользователей будут делать покупки вместе, сервер ASP.NET определенно будет нести огромную нагрузку. Возможно, наши внутренние веб-сайты могут быть лучше, но как нам сделать это с такими сайтами, как Amazon? Веб-сайт Amazon China, который является веб-сайтом Joyo, не сохраняет его в объекте Session, потому что, если я не отправлю заказ на продукты, которые я положил в корзину на этот раз, эти продукты все равно останутся в корзине после входа в систему. в следующий раз. Я подумал, что они могут поместить данные из тележек в базу данных.
Ответ: Хранение корзины покупок в сессии, похоже, существует только при разработке курсов в университетах или в некоторых проектах стажировок, которые никого не волнуют. Фактически, почти все веб-сайты электронной коммерции хранят данные корзины покупок в базе данных. Вот некоторые пояснения и соображения по поводу дизайна:
1. Сессия не подходит для хранения больших объемов данных. При большом количестве пользователей это неизбежно скажется на производительности сервера, чего следует избегать.
2. Существует проблема случайной потери сеанса или когда пользователь случайно закрывает браузер, все элементы в корзине покупок будут потеряны, что приведет к очень плохому пользовательскому опыту.
3. Файлы cookie могут решить проблему сеанса, описанную в приведенном выше пункте, но из-за ограничения длины файлов cookie, накладных расходов на связь при использовании файлов cookie и соображений безопасности файлы cookie не подходят для корзин покупок.
4. Более удобным для пользователя является то, что статус корзины покупок можно записывать в течение определенного периода времени независимо от того, вошел ли пользователь в систему или нет. Для этого требуется, чтобы корзина покупок в базе данных не была привязана к пользователю.
5. Продукты, помещенные в корзину, обычно представляют собой продукты, предназначенные для покупки, но они не обязательно могут стать фактическими заказами. В настоящее время сохранение этих данных играет жизненно важную роль в интеллектуальном анализе данных и бизнес-анализе.
Вопрос: 2. О параллелизме?
Оказывается, когда я разрабатывал свой собственный макет веб-сайта, я однажды задумался над таким вопросом: если клиент кладет несколько книг в корзину на веб-сайте, следует ли вычесть это количество книг из инвентаря? Вот что я сделал. Я вычитаю количество соответствующих книг в корзине из базы данных, чтобы другие пользователи не могли видеть ложное количество книг в это время (если оно не вычитается, то другие пользователи могут его приобрести. Например: количество книг в корзине). инвентарь равен 10. Эта книга, покупатель А кладет 10 экземпляров в свою корзину, а покупатель Б также кладет 10 экземпляров в свою корзину, тогда возникает конфликт, кто купит эту книгу). Однако в результате каждый раз, когда клиент обновляет корзину покупок, происходит связь с базой данных, что увеличивает нагрузку на сервер данных. У Amazon.cn в этом отношении дела идут не очень хорошо. Я думаю, несколько дней назад вы столкнулись с проблемой: когда вы покупали книгу «Углубленное понимание операционных систем», вы изначально размещали заказ, но были проинформированы. что на следующий день его не было в наличии. Этот инцидент действительно сильно повлиял на доверие к Amazon.cn. Я не знаю, решила ли их система эту проблему сейчас, но цена книги «Углубленное понимание операционных систем» в Joyo уже не та, что раньше. . Не знаю, как специалисты решили эту проблему. О своем успешном опыте можете написать в комментариях.
Ответ: Прежде всего, давайте поговорим о нагрузке на сервер базы данных. Подумайте, сколько раз нужно обращаться к базе данных каждый раз при обращении к странице, а затем подумайте, сколько раз нужно произвести обмен на одну операцию добавления. корзина для покупок (количество обращений в основном зависит от простоты использования веб-сайта). Дизайн, это другая тема), поэтому, хотя изменение дизайна здесь может снизить некоторую нагрузку на базу данных, считает Дин Сюэ, это не является узким местом. здесь не нужно уделять слишком много внимания.
В настоящее время распространенной практикой является то, что товары в корзине не будут немедленно вычтены из инвентаря. Это делается главным образом для того, чтобы кто-то злонамеренно завладел товарами через корзину. Кроме того, обычно указывается избыточная сумма, потому что большинство из них. Товары в корзине не будут немедленно вычтены со склада. При вводе окончательного успешного заказа корзина не может повлиять на продажи. Это необходимо сделать. Инвентарь обычно вычитается при успешной отправке заказа. То есть, когда пользователь отправляет заказ, у вас есть еще одна возможность напомнить пользователю, что инвентаря нет, поэтому нет необходимости вычитать инвентарь при размещении заказа в магазине. корзина. В случае успешных заказов не все заказы, отправленные пользователями, считаются успешными. Существует процесс автоматического просмотра заказов. Эту программу сложно написать, но она действительно очень важна, исходя из предыдущего анализа данных, поведения пользователей, репутации пользователей и т. д. Данные поступают из системы, которая автоматически завершает проверку заказа в течение нескольких минут. Интенсивность проверки зависит от отрасли. Это позволяет исключить большинство поддельных заказов, а некоторые из них могут быть переданы на проверку вручную. автоматическая система обзора.
Здесь возникает особая ситуация. Для некоторых специальных продуктов, таких как билеты на концерт, может осуществляться выбор места онлайн. В этом случае более полезно зарезервировать место после размещения корзины покупок. В настоящее время обычно резервируется место. сразу после размещения корзины, но он будет автоматически освобожден, если он не станет реальным заказом в течение определенного периода времени, например, десяти минут. Хотя он не может полностью устранить злонамеренное занятие места, он может решить большинство проблем. В настоящее время успешные заказы в сфере продажи билетов отличаются от большинства других отраслей. Критерием оценки успешных онлайн-заказов на выбор места в индустрии продажи билетов является успешность платежа, а это означает, что, если вы не заплатите, вас можно будет зарезервировать только на десять минут.
Вопрос: 3. Связь между заказами, деталями заказа и корзиной покупок.
Я думаю, что эта проблема всегда была большой проблемой для таких сайтов! Два дня назад учитель Чен из CSTP взял у меня интервью по этому вопросу по телефону. В то время я очень нервничал, и мой ответ на этот вопрос был не очень ясен. На самом деле, эту проблему нетрудно представить просто: есть две таблицы, заказы и детали. Каждый столбец в таблице заказов указывает на соответствующий столбец в таблице подробностей. Внешний ключ — это номер заказа в таблице заказов.
Ответ: Этот вопрос относительно простой. Один из них — поместить его в корзину и пометить его как заказ. В этом состоянии заказ можно изменить, и корзина покупок будет объединена с системой заказов. обратите внимание на обработку статуса входа и отсутствия входа в систему); во-вторых, необходимо иметь отдельную таблицу корзины покупок. Когда заказ наконец отправлен, информация в корзине копируется в таблицу заказа и сведений о заказе. Последний вариант используется чаще, и конкретный выбор зависит от отрасли и характеристик продукта.
Вопрос: 4. Как сформировать номер заказа в подробном списке?
Этот вопрос унаследован от вопроса 3. Я до сих пор не знаю, как решить эту проблему. У меня есть два решения: одно — использование триггера, а другое — программирование. Первый добавляет детали каждый раз, когда покупатель кладет товар в корзину, создает заказ после подтверждения покупки и меняет статус покупки в таблице подробностей, чтобы активировать триггер, и будет сгенерирован номер заказа (конечно, это номер заказа может быть любым. Программирование триггера также может заключаться в установке столбца номера заказа в таблице заказов для автоматического создания серийного номера). Последний определит номер заказа, а затем добавит к нему 1, чтобы создать новый номер заказа. Но мне всегда кажется, что эти два решения очень плохие, и мне хотелось бы знать, как обрабатываются номера заказов на коммерческих сайтах.
Ответ: Во-первых, лично я считаю, что триггерное решение нецелесообразно. Причины уточнять не буду, иначе будет очередная лажа. Здесь также есть два метода: один — автоматически генерировать числа из таблицы заказов. При создании заказа сначала запишите его в таблицу заказов, затем получите номер заказа, а затем обновите таблицу сведений о заказе; номер заказа в соответствии с бизнес-правилами. Когда номер заказа После того, как он известен, вы можете сначала создать запись заказа или подробную запись, но вы должны убедиться, что в конце подробной записи должна быть запись заказа, в противном случае произойдет ошибка. много странных деталей. Есть два способа реализовать последний метод. Первый заключается в том, что номер заказа генерируется базой данных, обычно с использованием временной таблицы. Преимущество состоит в том, что серийный номер можно использовать универсально для всех предприятий. Второй способ заключается в том, что номер заказа. генерируется программой. GUID можно использовать при создании программы, но лучший способ — использовать время заказа плюс идентификационное значение. Размер детализации определяется объемом данных. Идентификационная часть пронумерована по порядку. Следует также учитывать детализация по времени, чтобы другие не могли грубо подсчитать объем вашего бизнеса (пот ~~~ Это еще одна проблема. Есть еще одна проблема). много способов это сделать. Это зависит от ситуации. Я напишу в другой день, когда у меня будет время. Давайте напишем статью о генерации номера заказа. Я отвечу на многие, так что у меня, вероятно, будет достаточно информации...)