php - 保持缓存内容的实时 View

标签 php mysql caching view real-time

我正在处理一个繁忙的网站。有时它会比平均天数获得更多的流量。内容已缓存,但由于站点所有者希望查看实时帖 subview ,因此必须对每个帖 subview 至少对 MySQL 执行一次查询,这在重负载下会成为性能问题。

我所能想到的就是为 View 创建一个不同的表并使用 cron 作业定期更新原始表。我确信这会减少更新时间,但我不确定这是否是最佳方式。

最佳答案

那么对于你的问题,有以下三种选择:

  1. 不要缓存那条特定的信息。但从你的描述来看,你似乎已经在这样做了,但没有奏效。

  2. 使用直写缓存。每当您“添加”或“删除”帖子时,也会为该项目生成缓存数据。这可能很难,具体取决于您的缓存系统的工作方式,但这是一种选择。

  3. 写入时使缓存失效。每当“添加”或“删除”帖子时,删除这些帖子的缓存数据。这样,在下一次从缓存请求这些时,缓存将被填充。这可能容易也可能不容易,因为检测哪些缓存项引用数据库节点可能并不容易(可能需要添加更多信息或元缓存对象来跟踪此数据)。

话虽如此,我发现一个查询成为性能问题有点奇怪。更有可能的是,有问题的查询需要优化,或者您的 MySQL 服务器需要优化。我经常在我的一些生产服务器上看到每秒超过 5k 的查询,并且没有负载问题。那是因为这些查询非常有效,而且我有 Query Caching在 MySQL 中开启(它比你想象的更有效)...

关于php - 保持缓存内容的实时 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081268/

相关文章:

php - Datalist HTML 中的分界线不起作用

android - 如何防止名称缓存并在发现时检测蓝牙名称更改

由于浏览器缓存,HTML 和 CSS 不会在线更新

PHP 函数不适用于 javascript

php - php 中的 strtotime 没有给出准确的时间

php - 使用 https 在 header 中隐藏密码

mysql - 在 Laravel 中查询多个关系并左连接另一个表

mysql - 如何优化或正确编写此 MYSQL 查询?

php - for 循环中包含 foreach 循环? PHP

caching - Nginx,如果未设置,如何添加 header