Django缓存:在基本服务器资源上长时间缓存数千个查询

2024-10-01 02:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在建立一个网站,在我心目中,数百(我希望数千!)每天的“get”查询数将在文件系统中缓存几个月。你知道吗

然而,在阅读the cache documentation时,我发现默认值倾向于一个小而快的缓存周期。你知道吗

一个old post描述了一个像我想象的那样的策略,破坏了他们的服务器。你知道吗

当然,the current django code似乎是从2012年开始演变的。但是缓存默认值仍然保持不变。。。你知道吗

我不知道我是否在正确的轨道上。你知道吗

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

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

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

如何在相当基本的服务器资源上长时间地缓存通常数量不断增加的查询(能够形成一个大容量)?你知道吗


Tags: thedjango服务器cacheget网站documentationcode
1条回答
网友
1楼 · 发布于 2024-10-01 02:25:09

Django的缓存后端*应该与实现无关。例如,如果您想从文件系统缓存、redis缓存或memcache开始,那么对django来说就不太重要了。你知道吗

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

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

对于第一阶段,我会:

  • 选择一个共享缓存,无论是redis还是memcached,当您开始扩展到多服务器设置时,这应该不会那么痛苦
  • 估计需要缓存的数据量,以及预测的数据大小增长类型,以确保缓存的大小适当。你知道吗
  • 我觉得缓存失效通常不是一个关于数据应该在缓存中保留多长时间的既定策略,它受数据更改时间的控制,它应该强制缓存失效,这样客户端就不会看到过时的数据

相关问题 更多 >