如何使用ob_start选择缓存数据的内容和时间,而不是查询数据库?

时间:2010-05-12 17:41:07

标签: php mysql caching

我的主页有几个独立的动态部分。这些部分包括公司最近的新闻列表,站点统计小组以及某些员工的在线状态。最近的新闻每月都在变化,网站统计每天都在变化,在线状态每分钟都在变化。我想缓存这些面板,以便在每次加载页面时都不会点击db。

是否正在使用ob_start()然后ob_get_contents()将这些部分缓存到文件中以正确的方式执行此操作,或者PHP5中有更好的方法来执行此操作吗?

在提出这个问题时,我正试图回答这些问题:

  • 如何在不进行大量基准测试的情况下确定缓存此数据的正确方法?
  • 将这些部分缓存在不同的文件中,然后根据请求将它们连接在一起是否有意义,还是应该每分钟重新查询一次数据和缓存一次?

我正在寻找一个经验法则来规划页面以及进行测试不符合成本效益的情况(我的意思是客户没有付出足够的代价)。

2 个答案:

答案 0 :(得分:1)

虽然不是最好的经验法则......在没有任何明确要求的情况下,我会让您的SLA(期望,预测,预期或已知)指导您的策略作为起点。通常,我们都知道缓慢或不太可靠的链接在哪里。这些可能是下游系统,慢速网络链接,慢速数据库查询,转换等...将缓存视为一种缓解资源不可用,低于SLA或妨碍用户体验的想法至少是一条谨慎的路线。思维。至少你肯定会做一些背面的计算,但即使是较低保真度的数字也是一个好的开始。

答案 1 :(得分:0)

不,输出缓冲与数据库缓存无关。

但拇指的规则是:将所有这些事情单独留下,直到您意识到该网站确实需要一些性能改进为止。
然后做一些剖析。
最后,消除瓶颈。最有可能的不是这些数据库调用。