0

私のdjangoプロジェクトでいくつかのモデルのクエリをキャッシュしています。キャッシング自体は機能しているようですが、新しいモデル オブジェクトを追加してテストを行いたいと思ったときに、モデルが作成された直後に、クエリ リストが更新されて新しいモデルが含まれていることに気付きました。これは正しくないはずです。キャッシュのタイムアウトは 1 unix 時間に設定されました。

新しいモデルを見るまでに 1 時間待たなければならないのではないでしょうか? コードは次のとおりです。

def home(request, filterBy = 'all', sortBy = 'popularity'):
    if not cache.get('home' + filterBy + sortBy):
        models = Model.objects.with_rankings(filterBy, sortBy, request)
        cache.set('home' + filterBy + sortBy, models, 3600) # 1 hour
    else:
        models = cache.get('home' + filterBy + sortBy)

ありがとうございました。

4

1 に答える 1

3

cache.get(key)キャッシュに値がない場合は、False などではなく Noneを返すことに注意してください。そして、あなたはそれをチェックしていません。戻り値がtrueかどうかをチェックしているだけです。空の QuerySet も false であり、おそらくあなたの場合です。

次のようにする必要があります (キャッシュが 1 つ少なくなります):

def home(request, filterBy = 'all', sortBy = 'popularity'):
    models = cache.get('home' + filterBy + sortBy)
    if models is None:
        models = Model.objects.with_rankings(filterBy, sortBy, request)
        cache.set('home' + filterBy + sortBy, models, 3600) # 1 hour
于 2012-09-28T15:55:09.973 に答える