【问题标题】:Django - how to invalidate per-view cache? [duplicate]Django - 如何使按视图缓存无效? [复制]
【发布时间】:2023-03-21 20:23:01
【问题描述】:

我想使用per-view cache。我知道它是如何工作的,但问题出在哪里?如何使该缓存无效?每次更改数据库记录时,我都必须这样做。没有关于如何做到这一点的信息:/

【问题讨论】:

    标签: django django-cache


    【解决方案1】:

    这是一个我发现可能有用的 django sn-p:

    from django.core.cache import cache
    from django.http import HttpRequest
    from django.utils.cache import get_cache_key
    
    def expire_page(path):
        request = HttpRequest()
        request.path = path
        key = get_cache_key(request)
        if cache.has_key(key):   
            cache.delete(key)
    

    否则这个 SO 问题会更详细地说明:Expire a view-cache in Django?

    【讨论】:

      【解决方案2】:

      看看这个 sn-p http://djangosnippets.org/snippets/936/。每次要使缓存失效时,将视图的路径(url)传递给 expire_page 函数。

      【讨论】:

      • 作为 url,我应该传递反向函数的结果吗?我通过了: expire_page(reverse('index_show_freelinks', kwargs={'name':'partners'})) 但缓存仍然有效。
      • 您确定reverse 正在返回您想要的网址吗?也许尝试对其进行硬编码以查看它是否有效。你如何测试缓存是否仍然有效?
      猜你喜欢
      • 2013-08-18
      • 2020-09-24
      • 2015-10-20
      • 2018-01-02
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2017-12-11
      • 2012-04-24
      相关资源
      最近更新 更多