0

サイト全体の Django キャッシングを有効にしましたが、使用しているサードパーティ アプリではキャッシュ制御の期待値が指定されていません。だから、私は彼らのビューがキャッシュされると推測しています。

問題は、Django に一部のアプリのビューをキャッシュさせたくないことです。に URL レベルのキャッシュ制御を適用するにはどうすればよいinclude()ですか?

url(r"^account/", include("pinax.apps.account.urls")) #How to apply cache control here?
4

1 に答える 1

1

できません。サイトごとのキャッシュは、特定のビューではなく、要求と応答のみを考慮するミドルウェアを介して実現されます。

ただし、パッチを適用したdjango.middleware.cache.FetchFromCacheMiddlewareを提供することで、これを実現できます。

class ManagedFetchFromCacheMiddle(FetchFromCacheMiddleware):
    def process_request(self, request):
        if should_exempt(request):
            request._cache_update_cache = False
            return
        return super(ManagedFetchFromCacheMiddle, self).process_request(request)

def should_exempt(request):
    """Any predicator to exempt cache on a request
    For your case, it looks like

    if request.path.startswith('/account/'):
        return True
    """

'django.middleware.cache.FetchFromCacheMiddleware'をMIDDLEWARE_CLASSESの上記のパスに置き換えます。

たぶん、上記の汎用バージョンは、パッチをDjangoコミュニティにコミットするのに適しています= p

于 2012-03-25T15:40:47.493 に答える