12

私の Web サイトでは、ほぼすべてのページに「Welcome, ABC」と表示されたヘッダー バーがあり、「ABC」はユーザー名です。つまりrequest.user、単一のリクエストごとに呼び出され、データベースが何度もヒットします。

userしかし、ユーザーがログインすると、そのユーザーのインスタンスを Cookie に保存して暗号化できるはずです。そうすれば、データベースに繰り返しアクセスすることを避け、request.user代わりに Cookie から取得することができます。

これを行うために Django をどのように変更しますか? 必要なことを行う Django プラグインはありますか?

ありがとう

4

4 に答える 4

1

適切なキャッシングを行うと、データベース ヒットの数が大幅に減少するはずです。繰り返しになりますが、私はキャッシングの専門家ではありません。問題を解決するために request.user を変更するのは悪い考えだと思います。より良い解決策は、Cookie から必要なユーザー データを読み込んで結果を返そうとするユーティリティ、メソッド、またはカスタム テンプレート タグを作成することだと思います。ユーザー データが Cookie に見つからない場合は、request.user を呼び出し、データを Cookie に保存してから、結果を返す必要があります。必要に応じて Cookie を更新できるように、post_save シグナルを使用してユーザー データの変更を確認できます。

于 2011-05-11T00:05:10.717 に答える