2014-04-11 35 views
1

我明白Django的高速缓存功能到期指定的时间间隔已经过去之后(例如,1分,1小时等),但是我有一些内容每天的基础上发生变化(例如,“每日消息”)。理想情况下,这将被缓存24小时,但如果我将超时设置为24小时,则不能保证缓存将在午夜精确过期。处理这种情况的最佳做法是什么?如何在特定的时间(例如午夜)清除Django模板缓存?

+0

我不认为这是一个好主意,_BROWSER cache_动态页面。你应该只缓存你的静态文件,而不是整个页面。 – xyres

回答

1

两种简单的方式映入脑海,既涉及计划的任务,需要在(比方说)午夜运行。

1)获得领先的游戏:安排一些代码运行(例如对于要求您在午夜内容“每日消息”,用24小时到期的自定义管理命令)。 (假设相关的缓存键并没有被设定)

2)去核:在午夜

调度缓存中清除,或者两者结合:

不要去核,只是安排调用只在午夜删除MOTD密钥(例如cache.delete('motd_key'),然后缓存新的密钥)

或者,如果您使用Redis作为缓存后端,则可以缓存MOTD,然后一个EXPIREAT调用设置缓存的MOTD进入在23:59:59到期。redis.py会让你做一个Python化的方式。

如果您使用的Memcached作为后端,你没有得到控制的那个级别。

(如果你使用locmem://,你就错了; O))

+0

这些是一些不错的选择(例如计划任务或Redis)。我以前没有听说过Redis,并会检查出来。谢谢! – Brad