CakePHP:使用APC进行缓存仍然会创建缓存文件,没有性能优势

CakePHP:使用APC进行缓存仍然会创建缓存文件,没有性能优势,cakephp,caching,apc,Cakephp,Caching,Apc,我的问题是: 我正在进行Apache基准测试,看看CakePHP APC引擎是否工作。但是,如果我将Cake的缓存配置设置为使用APC引擎,则仍会在tmp文件夹中创建包含序列化缓存数据的缓存文件,这使我认为正在使用文件缓存 我也没有得到任何性能上的好处:使用APC和文件引擎,测试结果约为4秒。如果我在控制器中硬编码普通apc_add()和apc_fetch函数,测试结果会更好:~3.5秒 所以APC正在工作,但是为什么不能使用它呢 我的设置: bootstrap.php: /*Cache::co

我的问题是:

我正在进行Apache基准测试,看看CakePHP APC引擎是否工作。但是,如果我将Cake的缓存配置设置为使用APC引擎,则仍会在tmp文件夹中创建包含序列化缓存数据的缓存文件,这使我认为正在使用文件缓存

我也没有得到任何性能上的好处:使用APC和文件引擎,测试结果约为4秒。如果我在控制器中硬编码普通apc_add()和apc_fetch函数,测试结果会更好:~3.5秒

所以APC正在工作,但是为什么不能使用它呢

我的设置:

bootstrap.php:

/*Cache::config('default', array(
    'engine' => 'File', 
    'duration'=> '+999 days',
    'prefix' => 'file_',
));*/
Cache::config('default', array(
    'engine' => 'Apc',
    'duration'=> '+999 days',
    'prefix' => 'apc_',
));
控制器:

$catalogsLatest = Cache::read('catalogsLatest');
if(!$catalogsLatest){
$catalogsLatest = $this->Catalog->getCatalogs('latest', 5, array('Upload'));
Cache::write('catalogsLatest', $catalogsLatest);
}
php.ini:

[APC]
apc.enabled = 1
apc.enable_cli = 1 
apc.max_file_size = 64M
如果我在缓存执行之前或之后检查控制器中的Cache::settings(),我会得到以下结果:

Array
(
    [engine] => Apc
    [path] => E:\wamp\www\cat\app\tmp\cache\
    [prefix] => apc_
    [lock] => 1
    [serialize] => 
    [isWindows] => 1
    [mask] => 436
    [duration] => 86313600
    [probability] => 100
    [groups] => Array
        (
        )
)

我使用的是CakePHP 2.2.4。

是的,当然APC缓存将提高CakePHP驱动的应用程序性能,因此,让我们根据以下说明检查您的设置,并在遵循说明后通知我,执行基准测试并告诉我结果。 您可以使用CakePHP中的APC缓存引擎将整个HTML视图文件缓存在缓存中。 Cake'sCacheHelper将为您完成这项工作。假设您有一个PostsController,并且希望缓存与此控制器相关的所有视图文件。在这种情况下,首先必须在控制器中定义以下代码

   class PostsController extends AppController {
       public $helpers = array('Cache');
   }
bootstrap.php文件中,必须添加CacheDispatcher

   Configure::write('Dispatcher.filters', array(
        'CacheDispatcher'
       )
   );
现在再次在您的PostsController中告诉您缓存文件的情况。

这将缓存视图操作10小时,索引操作13小时

让我知道您的apache基准测试工具测试结果。我认为在另一个线程上正在讨论最相似的问题,请查看


谢谢。

首先,我认为这个配置应该放在app/Config/core.php中,而不是放在bootstrap.php中。显然,配置已被识别,因此这不应该是问题所在。app/tmp目录中写入的缓存文件可能是CakePHP本身编写的缓存文件,您检查过它们的内容吗?要检查是否有任何内容写入APC,可以使用APC控制面板,该面板可以通过APC附带的APC.php文件访问。不是一个直接的答案,但可能是这个helps@thaJeztah只有核心缓存进入core.php。默认的缓存配置和其他用户定义的缓存配置在bootstrap.php中。@ADmad感谢您提供的信息。CakePHP2.x中是否有此变化?这以前是在CakePHP 1.x中的core.php中,还是我弄错了?@thaJeztah是的,它在2.x中发生了更改。@ADmad我将检查我项目的配置。Thx:)
    public $cacheAction = array(
        'view' => 36000,
        'index'  => 48000
    );