Django 在URL路由上使用cache_page缓存后,更新数据如何及时清除对应的路由缓存

问题遇到的现象和发生背景

用户访问页面会提供一个清单列表
此时的清单列表在Django采用了缓存操作,使用的是redis缓存,因为view视图应用是使用的类方法,所以cache_page在路由页面。

from django.urls import path
from django.views.decorators.cache import cache_page
urlpatterns=[
  path('<str:username>/address',cache_page(600)(views.AddressView.as_view())),
]
我想要达到的结果

问题:
请教,在用户对列表信息修改后,怎样才能对路由中对应的cache_page()缓存进行清空,然后使用户访问时可以重新缓存到新的数据列表,而不是等到缓存到期后才能显示。

我的解答思路和尝试过的方法


cache.delete(key, version=None)¶

你可以使用 delete() 显示地删除键,以清空特定对象的缓存:

>>> cache.delete('a')
True

如果键被成功删除,将返回 delete() ,否则返回 False 。

cache.delete_many(keys, version=None)¶

如果你想一次性清除很多键,给 delete_many() 传递一个键列表即可删除。

>>> cache.delete_many(['a', 'b', 'c'])

cache.clear()¶

最后,如果你想删除缓存里的所有键,使用 cache.clear()。注意,clear() 将删除缓存里的 任何 键,不只是你应用里设置的那些键。

>>> cache.clear()

cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)¶

cache.touch() 为键设置一个新的过期时间。比如,更新一个键为从现在起10秒钟后过期:

>>> cache.touch('a', 10)
True

和其他方法一样,timeout 参数是可选的,并且默认是 CACHES 设置的相应后端的 TIMEOUT 选项。

如果键被成功 touch(),将返回 True,否则返回 False

https://docs.djangoproject.com/zh-hans/4.0/topics/cache/

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632