不要将 APC 的缓存能力与其优化中间代码和缓存编译代码的能力混为一谈。APC 提供 2 个不同的东西:
- 它提供了一种缓存数据结构(对象、数组等)的便捷方法,以便您可以使用 apc_store 和 apc_fetch 存储/获取它们
- 它保留脚本的编译版本,以便下次运行时运行得更快
让我们看一个(1)的例子:假设你有一个需要 1 秒计算的数据结构:
function calculate_array() {
sleep(1);
return array('foo' => 'bar');
}
$data = calculate_array();
您可以存储它的输出,这样您就不必再次调用慢速 calculate_array() :
function calculate_array() {
sleep(1);
return array('foo' => 'bar');
}
if (!apc_exists('key1')) {
$data = calculate_array();
apc_store('key1', $data);
} else {
$data = apc_fetch('key1');
}
这将大大加快,远少于原来的 1 秒。
现在,对于上面的 (2):拥有 APC 不会使您的程序运行速度超过 1 秒,这是 calculate_array() 需要的时间。但是,如果您的文件还需要(比如说)100 毫秒来初始化和执行,那么只需启用 APC 就需要(大约)20 毫秒。因此,初始化/准备时间增加了 80%。这可以在生产系统中产生相当大的差异,因此即使您从未显式调用它的任何函数,简单地安装 APC 也会对脚本的性能产生明显的积极影响