4

2 つの質問があります。

1)私は使用するかどうか疑問に思っています

django.contrib.sessions.backends.cache

セッションを保存すると、Web サイトのパフォーマンスが本当に向上しますか? 約 25,000 人の同時ユーザーがいると仮定します。各ユーザーが多くのデータベース変更を行います (ブラウザ ゲームなど)。違いは顕著ですか?

2)キャッシュされたセッションを使用している間(dbなし):特定のユーザーがログインしているかどうかを確認する方法(同じアカウントで複数のログインを許可しないでください)?

4

1 に答える 1

6

re1。

私の経験からの違いは巨大です。シナリオでは、セッションが作成または変更されるたびに、db書き込みが生成されます。ユーザーがサイトにアクセスするたびに、db読み取りが生成されます。これをDBから移動すると、リクエストごとに少なくとも1つのクエリが保存されます。

この追加のトラフィックに加えて、通常のアプリトラフィックは、データベースのパフォーマンスを簡単に低下させる可能性があります。

再。2.2。

dbでバックアップされたセッションの場合でも、ユーザーが1回ログに記録されていることを確認する明確な方法はありません(すべてのセッションデータを読み取り、それを選択解除してからフィルタリングすることは明確な方法ではありません:))

これを行うには、おそらくキャッシュを使用します。ユーザーがログインするたびに、ここにキー(user:<user_id>など)があるかどうかを確認します。保存されている値はセッションIDになり、現在のセッションが異なる場合は1つ保存-古いセッションを期限切れにし、新しいセッションIDを保存します。

ただし、これでも常に機能するとは限りません。ブラウザのタブ/ウィンドウが同じCookieを共有し(特にSESSION_EXPIRE_AT_BROWSER_CLOSEがFalseの場合-デフォルト)、セッションはCookieベースのみです。

于 2011-03-16T01:35:36.413 に答える