我的问题:
我正在进行Apache Benchmark测试,以查看CakePHP APC引擎是否工作。但是,如果我将Cake的缓存配置设置为使用APC引擎,则仍在tmp文件夹中创建带有序列化缓存数据的缓存文件,这使我认为正在使用文件缓存。
我也没有任何性能方面的好处:使用APC和文件引擎,测试结果约为4秒。如果我在控制器中对普通的apc_add()和apc_fetch函数进行硬编码,则测试结果会更好:〜3.5秒。
因此,APC正在运行,但是Cake为什么无法使用它。
我的设置:
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的CacheHelper将为您完成这项工作。假设您有一个PostsController,并且想要缓存与此控制器相关的所有视图文件。在这种情况下,首先必须在控制器中定义以下代码。
class PostsController extends AppController {
public $helpers = array('Cache');
}
并且必须在bootstrap.php文件中添加CacheDispatcher。
Configure::write('Dispatcher.filters', array(
'CacheDispatcher'
)
);
现在再次在PostsController中,您必须讲述缓存文件。
public $cacheAction = array(
'view' => 36000,
'index' => 48000
);
这将缓存视图操作10小时,而索引操作13小时。
让我知道您的Apache基准工具测试结果。我认为最相似的问题正在另一个线程https://stackoverflow.com/a/18916692/1431786上讨论,请检查一下。
谢谢。