我的问题:
我正在进行Apache Benchmark测试,看看CakePHP APC引擎是否有效。但是,如果我将Cake的缓存配置设置为使用APC引擎,则仍会在tmp文件夹中创建具有序列化缓存数据的缓存文件,这使我认为正在使用文件缓存。
我也没有获得任何性能优势:使用APC和File引擎,测试结果约为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。
答案 0 :(得分:0)
是的,当然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检查出来。
感谢。