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