私は 3 年以上電子商取引を行っていますが、電子商取引用の基本的なショッピング カートの実装を作成することは可能ですか?現在、ショッピングカートに使用されている主な保存方法には、セッション方式、Cookie 方式、データベースストレージがあります。メリットとデメリットをそれぞれ分析してみましょう。
1. セッション(Memcached)方式
利点: ショッピングカートの情報はサーバー上に保存され、1M の情報を保存できます。
短所: 大規模な Web サイトの場合、サーバーのメモリ リソースを過剰に占有し、サーバーに過剰な負荷がかかります。セッションによって保存された情報は、ユーザーがログアウトすると失われます。次回ログインするとショッピングカート内の商品情報は失われ、再度選択することのみとなります。
2. Cookie メソッド
利点: ショッピング カートの情報はクライアントに保存され、スペースを占有しません。サーバー リソースは基本的に永続ストレージにアクセスできます。 欠点: Cookie にはサイズ制限があり、4K を超えることはできず、安全性が十分ではありません。個人のPCであれば、Cookieはショッピングカートの情報をうまく保存できますが、官公庁環境の場合、Cookieで保存した情報は基本的に無効になります(他人のショッピングカートの情報に上書きされてしまいます)。大規模な電子商取引 Web サイトの場合、ユーザーの購買行動を分析し、ユーザーが興味のある商品を推奨する必要があります。ショッピング カートの情報が Cookie に保存されている場合、ユーザーの購買行動を分析して統計を収集することができません。
利点: 永続的ストレージはユーザーの購買行動を分析できます。 欠点: ウェブサイトの速度が遅くなり、コストとメンテナンスが増加します。
製品 に興味を持っているかを知る必要があり、同様の製品をユーザーに推奨する必要があります。ユーザー。次に、ユーザーの購買行動を分析する必要があります。ここでは、データベースの保存方法の進化についてのみ詳しく説明します。当初、当社はショッピング カートの情報を保存するために Cookie を使用していましたが、一定期間使用した後、多くの 顧客 から、ショッピング カートにはさらに多くの商品が入っているのに実際には商品が入っていないことが多いと苦情が寄せられていることがわかりました。お客様が選んだ商品。 データマイニング部門も、ショッピングカートの情報を分析できないと不満を述べた。 。 。 。ショッピングカートの保存方法を変更することにしました。 は、次のように テーブルを設計することから始めました:
ログイン ユーザーの場合、 UserId に基づいてショッピング カート情報をクエリします。ログインしていないユーザーの場合、ブラウザに基づいてクエリ方法が選択されます。Firefox の場合は、SessionId に基づいてクエリが実行されます。IE または 360 ブラウザの場合は、IP に基づいてクエリが実行されます。注文量が 1 日あたりわずか数万件だったとき、システムは非常に安定して動作しました。ただし、注文量が 1 日あたり 100,000 件を超えると、特にピーク時に、ショッピング カート データベースへの書き込みプレッシャーが特に高くなることがわかりました。クエリも頻繁にタイムアウトします。 10 日以上保存されたデータを消去する必要がありました。 10 日より古いデータを毎晩削除する新しいジョブを作成します。しかし、注文量が増えると。データベースの書き込みプレッシャーは依然として非常に高いです。このとき、データベースの書き込み圧力を解決するためにサブデータベースを検討します。ログイン ユーザーと匿名ユーザーに基づいてデータベースを分割しました。
ログインユーザーの場合、UserId に基づいて 2 つのライブラリに分割します。1 つは奇数のライブラリで、もう 1 つは偶数ライブラリです。匿名ユーザーの場合は、ブラウザーに応じて、Firefox ブラウザー用の 1 つのライブラリ (SessionId クエリ) と、IE または 360 ブラウザー用の 1 つのライブラリ (IP クエリに基づく) に分割しました。 テーブル構造にも調整を加えました。 UserId と CreatedDateTicks の時間を共同主キーとして使用します。
匿名ユーザー (Firefox) ストレージ テーブル構造: IE または 360 ブラウザのストレージ テーブル構造: データ ストレージに関しても調整が行われました。多数の更新操作はテーブルのロックを引き起こすため、多数のデータベース更新操作を削除します。 ショッピング カート情報が変更されると、コンテンツはユーザーのショッピング カート情報の XML を保存します。あとは挿入するだけです。データをクエリするときは、データの最後の部分だけを返します。サブデータベースを使用すると、単一データベースにデータを書き込む負担が軽減され、コンテンツはショッピング カート情報の XML を保存して、多数の更新操作を回避します。これでシステムがスムーズに動作できるようになりました。 [関連チュートリアルの推奨事項]