状態をサーバーのどこかに保存し、それをユーザーのセッションに関連付けると思います。表面上は Cookie は同じように保存できる場所ですが、セキュリティとデータ サイズを考慮すると、サーバー上にできるだけ多くのデータを保持することが望ましいことになります。
たとえば、公衆端末の設定で、誰かが Cookie の内容を見てリストを表示しても問題ないでしょうか。もしそうなら、クッキーは大丈夫です。そうでない場合は、ユーザーをデータにリンクする ID が必要になります。これを行うと、マシンにすべてを保存するのではなく、そのデータにアクセスするために、ユーザーがサイトに対して認証されていることを確認することもできます。セッション識別子だけでなく、何らかの形式の資格情報も必要になります。
サイズの観点からは、確かに、ブラウザ/ブロードバンド ユーザー向けの 4K Cookie などについてあまり心配する必要はありませんが、ターゲットの 1 つが携帯電話または BlackBerry (3G 以外) の接続を許可することである場合迅速なエクスペリエンスを実現する (そしてデータに対して課金されない) ためには、クライアントに渡されるデータの量を最小限に抑えることが重要になります。
サーバーストレージは、他のいくつかの回答で言及されている柔軟性も提供します。ユーザーはカートをあるマシンに保存し、別のマシンで作業を再開できます。カートを (一時的なセッションではなく) 何らかの形式の資格情報に結び付けて、ユーザーが Cookie をクリアした後もカートを永続化することができます。フォールト トレランスの面でもう少し問題があります。ユーザーのブラウザがクラッシュしても、サイトのデータは安全で健全です。
フォールト トレランスが重要な場合は、データベースのような永続的なストアが必要になります。そうでない場合、アプリケーションのメモリはおそらく問題ありませんが、アプリを再起動するとデータが失われます。ファーム環境にいる場合、ストアは一元的にアクセスできる必要があるため、ここでもデータベースを見ています。
一時的なセッションまたは資格情報によるキーのどちらを選択するかは、ユーザーがデータを保存し、後で戻ってデータを取得できるかどうかによって異なります。一時的なセッションは最終的に「放棄」としてクリーンアップされますが、おそらくそれで問題ありません。ユーザー プロファイルに結び付けることで、ユーザーは自分のデータを保持し、明示的に破棄することができます。いずれにせよ、フォールト トレランスと中央アクセシビリティのために、データベースのようなある種のバッキング ストアを利用します。(または、ソリューションをオーバーエンジニアリングしている可能性がありますか?)