【问题标题】:How to dynamically decide what to cache如何动态决定缓存什么
【发布时间】:2013-09-09 07:22:44
【问题描述】:

问题

我想为我的 Web 应用程序添加缓存。

由于缓存所有内容都会杀死我的服务器,而没有缓存会做同样的事情,我想知道如何即时决定值得缓存的内容

有什么办法吗?

换句话说,我需要一种算法,它会不断地:

  • 按受欢迎程度缓存数据...
  • ...但只是到了 服务器资源不足的程度

我的解决方案

我解决此问题的尝试假设我们缓存了所有数据并按以下步骤进行:

  1. 如果没有缓存版本,则创建一个,但仅在短时间内(例如 1 秒)

  2. 如果有缓存版本,请使用它并将其寿命再延长一秒

  3. 如果有缓存版本并且当前分钟数可以被 5 整除,请转到第 1 点

  4. 运行 cron,它持续监控服务器资源,如果资源不足,释放其中一些资源。

【问题讨论】:

  • 你的问题是建设性的,但我建议一个更简单的解决方案,你为什么不手动决定缓存哪个,首先显而易见的是缓存与数据库的连接
  • 这就是重点。我更喜欢自动化整个过程,而不是手动选择要缓存的文件。

标签: php mysql database caching memcached


【解决方案1】:

没有办法让程序知道现在缓存什么是重要的,什么不是。

这应该由建筑师或工程师决定。因为只有他知道应该缓存什么。如果您不知道必须缓存什么,您应该更好地研究应用程序的领域并观察她的行为。

不管怎样,要教一个程序,它应该缓存什么,你应该知道之前缓存了什么。

如您所说,应用程序必须知道数据的流行度。所以,应用程序知道什么缓存。

【讨论】:

  • 你说得对,但不同内容的受欢迎程度会随着时间而变化。当然,管理员可以监控这些更改并手动更新缓存规则,但我的解决方案似乎是自动执行的,不是吗?
  • 您必须按流行顺序缓存,例如。如果文件的流行度 >= 5 应该被缓存,如果是
猜你喜欢
  • 1970-01-01
  • 2011-11-14
  • 2023-04-05
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
相关资源
最近更新 更多