CakePHP的:缓存与APC仍然创建缓存文件,没有性能优势
我的问题:CakePHP的:缓存与APC仍然创建缓存文件,没有性能优势
我提出的Apache Benchmark进行测试,看是否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
如果我检查缓存::设置( )在缓存ex之前或之后在控制器中ecutuon,我得到这些结果:
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视图文件缓存到缓存中。 蛋糕的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小时,index操作13小时。
让我知道你的apache基准测试工具的测试结果。我认为大部分类似的问题正在讨论另一个线程https://stackoverflow.com/a/18916692/1431786检查出来。
谢谢。
首先,我认为这个配置应该放在app/Config/core.php中,而不是放在你的bootstrap.php中。显然配置被识别,所以这不应该是问题。写在app/tmp目录中的缓存文件可能是由CakePHP本身编写的缓存文件,您是否检查过它们的内容?要检查是否有任何内容写入APC,可以使用APC控制面板,该面板可以通过APC附带的apc.php文件访问。不是直接的答案,但也许这有帮助 – thaJeztah 2013-03-18 19:24:18
@thaJeztah只有核心缓存进入core.php。默认的高速缓存配置和其他用户定义的配置在bootstrap.php中。 – ADmad 2013-03-18 20:29:41
@ADMD感谢您的信息。 CakePHP 2.x做了这个改变吗?这个曾经在CakePHP 1.x的core.php中,或者我误解了? – thaJeztah 2013-03-18 20:37:59