1

Python 2.6.5 と Django 1.3 を使用しています

次のようなモデルがあるとしましょう:

class Company(models.Model):
    name = models.CharField(...)
    type = models.SmallIntegerField(...)
    ....

    def check_condition(self, someParam):
        do someThing...
        return someThing

これは頻繁に使用されるモデルなので、基本データを辞書に保持し、この辞書をキャッシュします

aComp = Company.objects.get(pk=somevalue)
compDict = {'name':aComp.name, 'type': aComp.type...}
cache.set('companyInfo', compDict)

なんでもいいのですが、場合によっては のメソッドを呼び出す必要があるのですCompanyが、会社の情報をキャッシュしているので、オブジェクトをキャッシュしていいのか迷っています...

compDict = {'name':aComp.name, 'type': aComp.type, 'obj':aComp}

そして、それを使用してください

myComp = cache.get('companyInfo')
compInst = myComp['obj']
compInst.check_condition(aParam)

そして、オブジェクトをキャッシュし、キャッシュされたオブジェクトをそのようなインスタンスメソッド呼び出しに使用することがどれほど効果的か疑問に思いますか?

4

1 に答える 1

2

問題ありません。もちろん、生データではなく、オブジェクトをピクルするオーバーヘッドがいくらかありますが、気にすることはありません。

また、ForeignKey、ManyToManyField、OneToOneField にアクセスすると、とにかく DB ヒットになることを覚えておいてください。ただし、これらの関係を手動でキャッシュできます。

于 2012-01-11T11:17:11.647 に答える