我正在处理一个繁忙的网站。有时它会比平均天数获得更多的流量。内容已缓存,但由于站点所有者希望查看实时帖 subview ,因此必须对每个帖 subview 至少对 MySQL 执行一次查询,这在重负载下会成为性能问题。
我所能想到的就是为 View 创建一个不同的表并使用 cron 作业定期更新原始表。我确信这会减少更新时间,但我不确定这是否是最佳方式。
最佳答案
那么对于你的问题,有以下三种选择:
不要缓存那条特定的信息。但从你的描述来看,你似乎已经在这样做了,但没有奏效。
使用直写缓存。每当您“添加”或“删除”帖子时,也会为该项目生成缓存数据。这可能很难,具体取决于您的缓存系统的工作方式,但这是一种选择。
写入时使缓存失效。每当“添加”或“删除”帖子时,删除这些帖子的缓存数据。这样,在下一次从缓存请求这些时,缓存将被填充。这可能容易也可能不容易,因为检测哪些缓存项引用数据库节点可能并不容易(可能需要添加更多信息或元缓存对象来跟踪此数据)。
话虽如此,我发现一个查询成为性能问题有点奇怪。更有可能的是,有问题的查询需要优化,或者您的 MySQL 服务器需要优化。我经常在我的一些生产服务器上看到每秒超过 5k 的查询,并且没有负载问题。那是因为这些查询非常有效,而且我有 Query Caching在 MySQL 中开启(它比你想象的更有效)...
关于php - 保持缓存内容的实时 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081268/