在PHP(APC / memcached)中使用分阶段缓存是否值得?

时间:2012-08-15 18:14:42

标签: php caching memcached apc

我主要想知道访问APC v.memcached(非操作码缓存)的对象缓存的速度差异。 memcached的主要优点是它是分布式的,不限于本地机器。但是,由于它是在网络上,因此存在某种延迟。

我想知道访问APC(在机器上)和memcached(在另一台服务器上)之间的速度差是否足以保证有一个分阶段的缓存方案,程序首先尝试APC,然后是memcached,最后是数据库如果一切都失败了。

2 个答案:

答案 0 :(得分:1)

像其他大多数一样:它取决于。

如果你有很多计算并且可以存储结果,那么缓存会加快速度。如果你只是基本上存储来自数据库的行,那么在内存缓存中会有所帮助,但memcached可能不会增加与数据库的巨大差异(假设db查询都很简单)。另一方面,如果您正在进行复杂的查询,或者进行大量的编程工作来创建内容,那么缓存就更有意义了。

举个例子,我最近在一个由第三方承包商编写的网站上工作,该承包商在设计期间没有做任何表演工作。它像牛一样缓慢,因为它有很多未经优化的包括等等。添加APC基本上将性能提高了10倍。添加memached减少了10 - 20 ms的加载时间。

如果你足够远,那么做一些性能测试(查找xdebug或其他工具)并查看瓶颈在哪里,然后进行相应的计划。

答案 1 :(得分:0)

请记住,如果您用其他东西填满APC缓存,那么APC将不得不重新计算您的网页的操作码。如果页面继续删除对象,这可能会导致问题,然后一旦页面运行,对象将继续删除页面。不好玩。

只是安全,不要试图将APC用于除了配置值以外的任何内容,这些配置值不会导致您的页面被删除以留出空间。

TL; DR一旦APC充满,您的网站将会变慢,您的服务器将更加努力。