2011-07-19 17 views
0

私は、当サイトに来るすべてのユーザーに最初の3回は特別なスプラッシュ画面が表示され、その後は再び表示されないという仕組みを実装しています。ユーザーがログインした回数を記録していますか?

私は、サーバー負荷(処理速度とデータベース負荷の両方)を全体的なコストを削減するという意味で「ベスト」アプローチと考えることができます。

A. Having another field in the users table which keeps count 
B. Keeping the users which are at different 'states' in different tables 
    (yeah - doesnt make much sense to me either) 
C. Keeping count via a cookie at the client end 

他にも可能なことはありますか?

答えて

0

Cookieをクリアしますサーバー/データベースの負荷の点では、クッキーの数を維持するのが最も簡単な方法です。欠点は、もちろん、ユーザーがCookieをクリアまたは無効にすると、スプラッシュ画面が再び表示されることです。

ほとんどのユーザーはCookieを頻繁にクリアしないので、ハイブリッドなアプローチをお勧めします。カウントを保持するためにクッキーを使用するだけでなく、データベースにフラグを追加します。クッキーの数が3に達するとすぐに、データベースフラグを設定します。このようにして、ユーザーが必要な数に達した後にCookieをクリアすると、フラグのおかげでスプラッシュ画面が表示されないことがあります。

ユーザーが3番目のカウントに達する前にクッキーをクリアしても、スプラッシュが3回以上表示されます。しかし、ユーザはスプラッシュが何回表示されるべきか、およびスプラッシュが表示されなくなる状態には決して到達していないので、彼らの視点からは経験は一貫している。カウントが3に達するのに十分長い間クッキーを保持するとすぐに、スプラッシュ画面が停止し、それらは停止したままになります。ユーザがブラウザ、コンピュータ(またはモバイルデバイス、タブレットなど)を変更するたびにリセットするカウンタを引き起こしますクッキーを使用して

+0

私は、あなたのデータベースに「フラグがある」というハイブリッドアプローチを推奨しているのは困惑しています。ユーザーがログインするたびにデータベースのチェックを行う必要がある場合は、 @aroth –

+0

@Alan - ユーザーがログインすると、データベースからユーザーのレコードを取得していませんか?もしあなたが(そして私はログインがうまくいくかどうかわかりませんが)そこにフラグ(またはカウント)を持っていれば、本当に余分な負荷がかかりません。このフラグは、3回ではなく1回だけ設定されるため、カウンタよりわずかに効率的です(カウンタを常に増やす場合はn回)。 – aroth

+0

フェアー...! –

0

データベースにヒットせず、セキュリティや信頼性に関する懸念がないため、クライアント側(Cookie)のトラッキングが最適です。 ユーザーが「セッション」を開始したことを検出する方法はわずかな難題です。すなわち、ユーザがページA(ログインカウンタのクッキーをインクリメントする)に入った後、ページBに行き、その後再びAに行くということです。一意の訪問を確保する必要があります。カウンタが再び増加しないようにします。これを達成する1つの方法は、訪問をフラッグする第2のクッキーを使用することであり、その期限切れ値は設定されず、ブラウザーを閉じるなどして期限切れになる。 「バックアップ」対策として

あなたはすることができ、データベース内のフラグ、ユーザが3回目を打ったこと、そしてそれが変化するブラウザに関してとフォールトトレラントだろう、など

+0

私は、あなたのデータベースに「フラグがある」というハイブリッドアプローチを推奨しているのは困惑しています。ユーザーがログインするたびにデータベースのチェックを行う必要がある場合は、 @Ofer –

+0

1)データベースに対して1回のUPDATEコマンドを実行すると、3回のヒットをするようなことではありません。 2)私はハイブリッドアプローチが最高だと言っているわけではありません。私はクライアント側の態度について説明しましたが、私はちょうどあなたが複数のブラウザの間で安全であるために、一回限りのUPDATEでそれをバックアップできると言っていました、クッキーの削除など –

0

など

ない限り、シークレットモードなどに切り替わり、そのクッキーを空にするユーザー名をクッキー名に埋め込むと、1人のユーザーと同じブラウザを使用して複数のユーザーからの訪問もカウントされます。

このユーザーごとにトラッキングする場合は、サーバーでトラッキングする必要があります。

関連する問題