Skip to main content
 首页 » 编程设计

python之基本服务器资源上的 Django 缓存 : Caching thousands of queries for a long time,

2025年05月04日31fff_TT

我正在构建一个网站,在我的脑海中,每天有数百个(我希望有数千个!)“get”查询将在文件系统中缓存几个月。

阅读 the cache documentation ,但是,我观察到默认值倾向于小而快的缓存周期。

安old post描述了一种像我想象的那样的策略,破坏了他们的服务器。

当然,the current django code似乎自 2012 年以来有所发展。但是缓存默认值仍然保持不变......

我想知道我是否在正确的轨道上。

我对缓存的熟悉程度仅限于享受 W3 Total Cache在相关目录中保存了数千个文件后的结果,只了解其基本设置。

经验丰富的开发人员将如何处理此任务的“第 1 阶段”:

没有预算支持基于 Redis 的解决方案(例如) ( Not a valid argument )

您如何在相当基本的服务器资源上运行长时间缓存正常增加数量的查询(能够形成批量)?

请您参考如下方法:

Django 的缓存后端 * 应该与实现无关。例如,如果您想从文件系统缓存或 Redis 缓存或内存缓存开始,这对 Django 来说并不重要。

我能想到您的方法有几个问题:

  • 您的数据集增长速度有多快?如果您的数据集大小相当稳定,那么缓存条目是否长期存在并不重要。
  • 您将如何使您的查询无效?如果查询被缓存了几个月,这表明数据没有改变;缓存失效是一个需要考虑的大问题,客户端不应该看到陈旧的数据。
  • 你在使用文件系统缓存吗?如果每个服务器都缓存数据,请求是否会不断分配给相同的服务器?如果不是那么多个服务器可以有重复的缓存,这是使用集中式缓存(redis/memcache)的好处之一
  • 您应该能够根据您当前的数据集大小、您希望缓存的数据量以及您需要的缓存大小的数据增长率来计算出一个很好的估计值。我觉得共享缓存会走得很远,并且可以在“基本服务器”资源上运行。

对于第 1 阶段,我会:

  • 选择共享缓存,redis 或 memcached,当您开始扩展到多服务器设置时,这应该会轻松很多
  • 估算您需要缓存的数据量,以及您预测的数据大小增长类型,以确保您的缓存大小合适。
  • 我觉得缓存失效通常不是关于数据应在缓存中保留多长时间的既定策略,它取决于数据更改的时间,这应该强制使缓存失效,以便客户端看不到陈旧数据