2

django のプロジェクトで魔女のキャッシングに少し奇妙な問題があります。

django-admin でページ コンテンツを編集できます。それを行ってサイトを更新すると、何も起こりません。変更には数分待たなければなりません。おもしろいことに、ブラウザー (またはコンピューター) を変更すると、待つ必要はありません。変更がオンになっています。それはdjango、ブラウザ、または何の問題ですか?変更をすぐに取得するように setting.py を設定することは可能ですか?

ちなみに、「django.middleware.cache.FetchFromCacheMiddleware」をオフにすると、問題は消えますが、キャッシュをオフにしたくない...

何か案は?

4

1 に答える 1

0

はい。サイト全体のキャッシュをオンのままにしておきたいが、コンテンツが更新または追加されるたびにキャッシュがクリアされるようにしたい場合は、djangoシグナルを実装して、追加/更新/削除イベントを検出し、キャッシュをクリアできます。

Djangoシグナル-https://docs.djangoproject.com/en/dev/ref/signals/

コードスニペットの例を次に示します。-

from django.db.models.signals import post_save

@receiver(post_save, sender=BlogPost)
def clear_cache(sender, instance, created, **kwargs):
    if instance.published_on is not None:
        cache.delete('feed')

この例では、BlogPostモデルが「保存」(追加または更新)されるたびfeedに、キャッシュ内のキーが削除されます。あなたの場合、実装する必要がありますpage-content(このようなものを使用して、保存時にキャッシュのクリアをトリガーcache.delete('page-content')する対応するモデルを決定します。sender

于 2012-11-04T02:49:48.743 に答える