PHP:只是安装APC足以启用缓存,还是我还需要更改我的代码?

时间:2012-01-22 22:34:03

标签: php codeigniter caching apc

这里有一个非常的菜鸟问题。

我刚安装了APC,当我进入监控页面(apc.php)并单击“系统缓存条目”选项卡时,我可以在浏览服务器上托管的应用程序后看到该列表上的很多页面。为了测试我重新启动了apache并且所有缓存条目都消失了,但是当我再次开始浏览我的应用程序上的更多页面时,它们就开始出现在该列表中。

我没有对我的代码进行任何更改,所以我需要做的就是启用optcode缓存吗?或者我的代码也需要更改吗?

我问,因为我的应用程序正在使用codeigniter,并且codeigniter文档中有一个关于代码更改的缓存文档中的页面:

http://codeigniter.com/user_guide/libraries/caching.html

2 个答案:

答案 0 :(得分:4)

APC在解析时存储操作码缓存。正如您已经发现只要apache保持打开,缓存只会持续存在。但是当所请求的页面缺少操作码缓存时,只要Apache保持运行,APC就会存储它。但是,操作码缓存只是成功的一半。虽然确实会从缓存操作码中获得速度提升,但PHP中的大量时间会丢失到文件输入/输出和套接字通信(即数据库查询)。只要您可以确定您的脚本是将修改数据库或文件的唯一资源,您就可以安全地缓存数据库查询结果或文件内容,以便每个请求都不需要触及文件系统或数据库层。其逻辑使用了一些APC functions

if(apc_exists('some_database_value')) {
    $value = apc_fetch('some_database_value');
} else {
    //Query db for value, store in $value
    apc_store('some_database_value', $value);
}

此解决方案的唯一缺点是,如果您需要修改PHP脚本之外的任何缓存资源,则需要clear the APC cache from the CLI

答案 1 :(得分:1)

不,APC不需要更改代码来加速代码的实际运行;有关更多信息,请参阅示例this answer

  

使用APC,您首先获得操作码缓存 - 对于该部分,您拥有   您的代码中无需修改:只需安装扩展程序即可   启用它。

     

操作码缓存通常会加快速度:它会阻止PHP   通过保持操作码一次又一次地编译脚本 -   编译PHP文件的结果 - 在内存中。