Django:缓存w.r.t网址并反映更改

时间:2018-10-19 12:29:29

标签: django

在Django中,我有一个根据动态数据进行一些计算的网址。

因此,如果我缓存了url,那么动态数据如有任何更改,它将返回更新的结果。

例如:喜欢购买。

用户添加他想要的项目列表。

我有一个页面localhost/user/items/,该页面将显示他添加的所有项目的列表,并带有链接localhost/user/items/specs,以显示他添加的所有项目的规格。

显示localhost/user/items/页花费的时间更少。

但是localhost/user/items/specs需要很多时间。

如何缓存localhost/user/items/specs并反映所有更改

1 个答案:

答案 0 :(得分:0)

大量研究源代码后,我发现如果数据未更新,如何显示缓存页面,否则显示修改后的数据视图

from django.middleware.cache import CacheMiddleware

@login_required

someview(request, slug=None)

    ######  data_updated
    # Check the conditions data modified is updated or not
    data_updated = True/False
    ######

    cachemiddleware = CacheMiddleware(cache_timeout=60*15)

    if data_updated:

        #######
            # RUN all the code for view
            # response = ..........
        #######


        # this is required because if the url is already cached it will be false
        request._cache_update_cache = True

        return cachemiddleware.process_response(request, response)

    else:

        result = cachemiddleware.process_request(request)

        if result is not None:
            return result
        else:

            #######
            # RUN all the code for view
            # response = ..........
            #######

            return cachemiddleware.process_response(request, response)