1

私のウェブサイトでは、いくつかの画像についてユーザーのコメントを収集しています。未登録のユーザーは、「Good」ボタンをクリックできます。システムがユーザーの選択を記憶する最良の方法は何ですか? 「いいね」のクリックはお一人様1回までとさせていただきます。クッキー?セッション?他の方法?

4

2 に答える 2

1

最初に、すべてのセッション手法Cookie ベースであることを認識する必要があります。それはすべて良いテクニックです。つまり、Cookie が機能しない場所では機能しないという欠点があり、ユーザーの選択が忘れられてしまいます。そのような場合 (できればまれですが)、これらの選択を URL または CGI パラメーターとして保存できます。いずれにせよ、本当に安全にすることはできません。

そうは言っても、考慮すべきトレードオフがあります。

クッキー

純粋に Cookie ベースのストレージを使用する場合、単一のドメイン名で Cookie に保存できるユーザーの選択肢の数が制限される可能性があります。RFC 6265 は、それらに関するいくつかの SHOULD を述べており、実装がこれらに一致すると、最大 200KB で十分なはずです。古いRFC 2965では、実装では 80KB を提供する必要があると規定されています。また、ブラウザは、Web サイトへのリクエストごとに Cookie を送信することにも注意してください。これは、ユーザーのブラウジングが遅くなる可能性があります。

24 ビットのイメージ ID (1,600 万のイメージ) を想定すると、base64 で 4 バイトにエンコードされ、20,000 近くの選択肢を Cookie に詰め込むことができます。6 バイトにエンコードされた 32 ビットのイメージ ID の場合、Cookie には 10,000 を超える選択肢があります。

Cookie が面倒すぎるとわかった場合、たとえば 1,000 票の投票後にブラウザーをセッション テクニックに切り替えることができます… または、登録せずにこれに到達することは決してないだろうと考えてください ;-)

セッション

ユーザーの選択をセッションに保存する場合は、サーバー上に専用のストレージ領域を確保する必要があります。欠点は次のとおりです。
  1. セッションがいつ使用されなくなったかを知る安全な方法はありません。したがって、未使用のセッションを再利用するメカニズムが必要です。通常、一定量の非アクティブの後にセッションが期限切れになります。

  2. 複数の HTTP サーバー間で負荷を分散する場合は、スケーリングがより困難になります。

于 2012-12-19T15:41:08.500 に答える
0

Cookieとして保存する一意の「トークン」を作成します(たとえば、IPのハッシュ+タイムスタンプ)。この値は、投票に関連してデータベースにも保存されます。

于 2012-12-19T13:33:29.860 に答える