django - 如何在特定时间(例如午夜)清除 Django 模板缓存?

标签 django caching

我知道 Django 的缓存功能会在指定的时间间隔(例如 1 分钟、1 小时等)过去后过期,但我有一些内容每天都会变化(例如“每日消息”)。理想情况下,该缓存会缓存 24 小时,但如果我将超时设置为 24 小时,则不能保证缓存会在午夜准确过期。处理这种情况的最佳做法是什么?

最佳答案

我想到了两个简单的选项,都涉及需要在(比如说)午夜运行的计划任务。

1) 领先一步:安排一些代码运行(例如自定义管理命令),要求您在午夜提供“每日消息”内容,并在 24 小时内到期。 (这假设相关的缓存键尚未设置)

2) 进行核化:安排在午夜进行缓存清除

或者,将两者结合起来:

不要进行核攻击,只需安排一次调用仅在午夜删除 MOTD key (例如cache.delete('motd_key'),然后缓存新 key 。

或者,如果您使用 Redis 作为缓存后端,则可以缓存 MOTD,然后创建 EXPIREAT调用以将缓存的 MOTD 条目设置为在 23:59:59 到期。 redis.py 将让你以Pythonic 的方式做到这一点。

如果您使用 Memcached 作为后端,您将无法获得这种程度的控制。

(如果您使用 locmem://,那么您就错了;o))

关于django - 如何在特定时间(例如午夜)清除 Django 模板缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23011573/

相关文章:

python - Django Grappelli 自动完成问题

java - Java VM 如何处理 MT 上下文中的缓存行和内存对齐?

php - MVC 框架中的缓存策略?

Django URLS,如何将根映射到应用程序?

django - 我可以以某种方式在 Django ManyToMany 字段中使用 to_field 参数吗?

python - 通过一个表单字段在 Django 中上传多个文件

swift - 图像在缓存中占用的空间比 tvos 中的原始大小多

python - 克隆 EC2 实例后 sorl-thumbnail ThumbnailException 错误

php - 缓存php解析的css、js、txt文件

Swift、Kingfisher 缓存无法正常工作?