Django的缓存框架-自动删除?

时间:2018-09-14 04:38:15

标签: django caching

我遇到了以下问题,不知道为什么。

我使用Django的缓存框架来缓存部分网站。

我将过期时间设置为15分钟。

有时,当我检查数据库时,高速缓存表中没有记录。首先,我怀疑Django将删除数据库中已过期的缓存。

但是后来,我发现表中仍然存在一些过期的缓存。

我想问Django如何处理数据库中的缓存?

Django是否会自动删除表中所有已过期的缓存?

谢谢!

1 个答案:

答案 0 :(得分:1)

清除高速缓存的方式和时间取决于您所使用的高速缓存后端。通常,只有当缓存中的项目数超过指定的限制(而不是过期时)时,才会定期清除缓存-Django除非您尝试获取项目,否则不会进行检查从缓存中)。

documentation上的缓存配置开始:

  

实施自己的剔除策略的缓存后端(即error: initializer element is not constant {(&DriveCenter)(86),50,{stop,right,left,stop}}, note: (near initialization for 'fsm[0].fun') error: initializer element is not constant {(&DriveRight)(45),50,{stop,right,left,stop}}, void DriveCenter(unsigned long out){ printf("\ncenter = %d",out); } typedef struct { void (*fun)(unsigned long out); unsigned long delay; unsigned long Next_State[4]; } state ; state fsm[4] ={ {(&DriveCenter)(86),50,{stop,right,left,stop}}, {(&DriveRight)(45),50,{stop,right,left,stop}}, {(&DriveLeft)(787),50,{stop,right,left,stop}}, {(&DriveStop)(33),50,{stop,right,left,stop}} }; locmem后端)将采用以下选项:

     

filesystem:在删除旧值之前,高速缓存中允许的最大条目数。此参数默认为300。

     

database:到达MAX_ENTRIES时被剔除的条目分数。实际比率是CULL_FREQUENCY,因此将MAX_ENTRIES设置为2可以在达到1 / CULL_FREQUENCY时剔除一半的条目。此参数应为整数,默认为3。

因此清除缓存的时间和方式取决于这些参数。默认情况下,不会清除整个缓存-仅删除一部分条目。