1

Rails 3 では、デフォルトのセッション ストレージ メカニズムは cookie_store です。これは、セッション ハッシュ内のコンテンツがシリアル化され、エンコードされ、ブラウザの Cookie 内に保存されることを意味すると思いますか? これは、セッションの何も (またはほとんど) サーバーに保存されていないことを意味しますか?

Cookie オーバーフロー エラーが発生するという問題がいくつかありました。これは、ユーザー インスタンス (Cookie からリンク/フェッチされたもの) に追加し続けたためだと思います。

u = session[:user]
u.add_this lots_of_data

そのため、最終的に Cookie オーバーフロー エラーが発生しました。

私はこれについて正しいですか?セッションは Rails 3 の Cookie 内に完全に保存されますか (デフォルト)?

4

2 に答える 2

5

はい、Cookie ストアを使用すると、セッション データは Cookie に保存されます。サーバーに保存したい場合は、別のセッション ストアを使用する必要があります。

ただし、モデル オブジェクトまたは「大量のデータ」をセッションに保存している場合は、そもそも間違っている可能性が高いです。データはデータベースに送信され、セッションには取得に必要な情報のみが含まれている必要があります。

あなたの場合、これはユーザーIDをセッションに保存し、dbからユーザーをbefore_filterにロードすることを意味します。

于 2010-09-13T07:11:17.970 に答える
0

はい、あなたは正しいです。セッションにデータを追加し続けると、問題が発生する可能性があります。しかし、それに影響を与えるものは他にもいくつかあります。

かつて、CookieOverflow エラーが発生しましたが、その理由は flash[:notice] メッセージでした。

flash[:notice] = "message" を使用してリダイレクトすると、テキスト "message" が Cookie に保存されます。u が渡すテキストのサイズが 4KB を超える場合、「CookieOverflow」エラーが発生します。

于 2011-01-20T09:21:16.140 に答える