使Django中的缓存无效,这取决于Cookie

时间:2019-04-13 12:01:48

标签: django caching django-cache django-caching

我正在构建一个应用程序,该应用程序需要缓存基于cookie的响应。而且我还需要使其无效。

所以,目前我有两个观点

  1. 一个用于获取缓存的响应的文件。

  2. Other给出未缓存的响应,并且还会使视图1中的缓存无效

所以我的观点如下-

from django.utils import timezone

class UserDataCached(APIView):

    permission_classes = (permissions.IsAuthenticated,)

    @method_decorator(cache_page(60, key_prefix="userdata"))
    @method_decorator(vary_on_cookie)
    def get(self, request):
        times = [timezone.now()]
        return Response(times)


class UserDataUncached(APIView):

    permission_classes = (permissions.IsAuthenticated,)

    def get(self, request):
        cache_key = get_cache_key(request, key_prefix="userdata")
        print(cache_key)
        if cache.has_key(cache_key):
            cache.delete(cache_key)
        times = [timezone.now()]
        return Response(times)

这不起作用,我也尝试过维护一组键,例如

keys = set()
keys.add(learn_cache_key(request, response)

,然后在第二个视图中将键删除为

cache.delete_many(keys)

有什么办法可以实现吗?

0 个答案:

没有答案