1

Django Cache Machineを使用して Django ORM オブジェクトをキャッシュしています。それは素晴らしいソフトウェアです。ほぼすべてのモデルのデータベース アクセスが大幅に削減され、使い方も簡単です。

ただし、1 つのモデルがまだキャッシュされていません: django.contrib.auth.models.User. これは私自身のアプリケーション コードではないため、CachingMixinキャッシュ マシンの手順で各モデルに追加するように指示されている を使用していません。そのため、自分のアプリケーションのモデルはすべてキャッシュされていますが、Userモデルはキャッシュされていません。そのため、いまだに不要なデータベース アクセスが数多く発生しています。

これらのデータベースへのアクセスをなくす最善の方法は何ですか? django.contrib.auth.models.UserGit のコードベースの一部ではありません。そのクラスまたはモジュールのソースコードをまったく変更しないことをお勧めします。

4

1 に答える 1

3

キャッシング ミックスインを追加しながら、Dajgno ユーザー モデルの機能を保持するカスタム ユーザー モデルを作成する必要があります。

これで十分だと思います:

from caching.base import CachingManager, CachingMixin
from django.contrib.auth.models import AbstractUser, UserManager

class CachedUserManager(CachingManager, UserManager):
    pass

class CachedUser(CachingMixin, AbstractUser):
    objects = CachedUserManager()

そしてもちろん、あなたの settings.py で:

AUTH_USER_MODEL = 'myapp.CachedUser'
于 2015-01-27T19:45:53.440 に答える