0

如何使 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',
     }
}
4

1 回答 1

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)
于 2022-01-25T03:38:09.023 回答