我有一个需要缓存的Django视图,但是当HTTP请求调用视图时,它需要每100次回收一次。
我不能在这里使用基于区间的缓存,因为这个数字会随着流量而变化。
我该如何实现?除了维护计数器(在db中)之外还有其他好的方法吗?
答案 0 :(得分:2)
以下是一些想法/反馈:
如果你需要确切的话,你将不得不集中管理一些东西 - 如果你不能把它放在主DB中,那么这个链接解决方案中的Redis想法看起来还不错。如果Redis在你的堆栈中,我会使用它。如果100个请求可以是每个用户,并且您正在使用会话,则可以在会话中附加计数器。
implementing a counter that counts requests with django
如果不将计数器集中在网络服务器之外,则意味着您的应用需要保持单线程以保持内存中的计数。如果重新启动服务器,它也会重置。 IMO不是一个好主意......
如果你真的无法使其与其他任何东西一起使用,你可以在你的负载均衡器上破解类似请求计数器的东西(......如果负载均衡器是你控制的一台机器,那么你'我很乐意这样做)并将其作为Django的标题传递给读者。