4

我的问题:

我正在做 Apache Benchmark 测试,看看 CakePHP APC 引擎是否工作。但是,如果我将 Cake 的缓存配置设置为使用 APC 引擎,带有序列化缓存数据的缓存文件仍在 tmp 文件夹中创建,这让我认为正在使用文件缓存。

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

所以 APC 正在工作,但 Cake 不知何故不能使用它。

我的设置:

引导程序.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。

4

1 回答 1

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上正在讨论最相似的问题。

谢谢。

于 2013-09-21T21:00:51.650 回答