【问题标题】:how can i invalidate page cache in django如何使 django 中的页面缓存无效
【发布时间】:2022-01-25 00:28:30
【问题描述】:

如何使 django 中的页面缓存无效。 我正在尝试缓存一个页面,该页面使用 django-rest-framework 为每个用户显示一个唯一的列表。当从模型中添加、更新、删除另一个对象时,我无法弄清楚如何使页面缓存无效。

我愿意使用外部包或信号。

我不知道@page_cache 使缓存失效的关键是什么

我尝试使用 django-fancy-cache 但我得到一个错误

unsupported operand type(s) for +: 'float' and 'function'

我的缓存设置

CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
         'LOCATION': 'unique-snowflake',
     }
}

【问题讨论】:

  • 为什么要缓存每个用户唯一的页面?
  • 同一用户每分钟可以多次查看此页面。并且页面的处理器很重

标签: python django django-rest-framework django-caching


【解决方案1】:

您可以将失效逻辑移至模型。例如,为了在添加/更新对象时使缓存无效,您可以覆盖模型的保存方法。例如:

def save(self, *args, **kwargs):
    cache.delete(`YOUR_CACHE_KEY`)
    super().save(*args, **kwargs)

删除也一样:

def delete(self, *args, **kwargs):
    cache.delete(`YOUR_CACHE_KEY`)
    super().delete(*args, **kwargs)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2010-12-10
  • 2018-01-02
  • 1970-01-01
  • 2011-07-28
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多