4

CakePHP 是否支持 APC、XCache 等?

4

5 回答 5

6

在 cake's/app/config/core.php中,有一些选项供您设置缓存引擎(高于 1.2 的版本)。例如

  APC (http://pecl.php.net/package/APC)

 Cache::config('default', array(
    'engine' => 'Apc', //[required]
    'duration'=> 3600, //[optional]
    'probability'=> 100, //[optional]
    'prefix' => Inflector::slug(APP_DIR) . '_', //[optional]  prefix every     cache file with this string
));
于 2010-04-10T00:13:17.413 回答
4

它应该支持 APC 作为操作码缓存——毕竟它只是 PHP 代码。

似乎有一个与 APC 相关的类将 APC 用作数据的缓存:请参阅ApcEngine.
另请参阅手册:7.2.2 Cake Engines in Cake,其中说支持 APC、XCache、File 和 memcached。

于 2010-04-09T18:39:44.837 回答
1

只是为了添加已经提供的其他好的答案,有一些技巧可以让蛋糕使用文件缓存以外的任何东西作为内部缓存。这段代码将使 cake 使用 APC、Xcache,无论它的核心缓存是什么(本例中为 APC)

Cache::config('_cake_core_', 
    array(
       'engine' => 'Apc',
       'duration'=> 3600,
       'probability'=> 100,
    )
);

Cake 还可以通过将其放入您的控制器/应用程序控制器来缓存您的模型。

var $persistModel = true;

但是,模型只能使用文件缓存

这些都是从这篇文章中偷来的,其中包括一堆使用 cake 的缓存机制来加速你的应用程序的方法

http://www.pseudocoder.com/archives/8-ways-to-speed-up-cakephp-apps

此外,正如 Pascal 所提到的,通过安装和配置 APC,您的 PHP 操作码会自动缓存。

为了更好地缓存,php 支持 memcache 作为会话存储的替代文件,这在负载平衡环境中特别有用。单个服务器实现的一个示例是将其放入您的 ini

extension=memcache.so
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211?persistent=1"

这在你的 core.php

Configure::write('Session.save', 'php');
于 2010-04-13T14:20:04.297 回答
1

在 CakePhp 2.0 Apc 中自动检测和设置。在您的 core.php 中,您可以找到:

$engine = 'File'; 
if (extension_loaded('apc') && function_exists('apc_dec') && (php_sapi_name() !== 'cli' || ini_get('apc.enable_cli'))) {
    $engine = 'Apc';

}

于 2012-11-10T09:59:47.417 回答
0

请注意,在 CakePHP 2.2 之后,自动 APC 检测被禁用。

在 2.2.1 中使用 APC,如果检测到:https ://github.com/cakephp/cakephp/blob/2.2.1/app/Config/core.php

由于 2.3 默认引擎是“文件”。最新稳定/app/Config/core.php https://github.com/cakephp/cakephp/blob/2.4.4/app/Config/core.php#L352


从 2.4.4 开始支持这些

  • 文件引擎
  • 装甲运兵车
  • Wincache
  • XCache
  • 内存缓存
  • 雷迪斯

文档: http ://book.cakephp.org/2.0/en/core-libraries/caching.html#caching

  • FileCache 文件缓存是使用本地文件的简单缓存。它是最慢的缓存引擎,并且没有为原子操作提供那么多功能。但是,由于磁盘存储通常非常便宜,因此在文件中存储大型对象或不常写入的元素效果很好。这是 2.3+ 的默认缓存引擎

  • ApcCache APC 缓存使用 PHP APC 扩展。此扩展使用网络服务器上的共享内存来存储对象。这使得它非常快,并且能够提供原子读/写功能。默认情况下,2.0-2.2 中的 CakePHP 将使用此缓存引擎(如果可用)。

  • Wincache Wincache 使用 Wincache 扩展。Wincache 在功能和性能上与 APC 相似,但针对 Windows 和 IIS 进行了优化。

  • XcacheEngine Xcache 是一个 PHP 扩展,提供与 APC 类似的功能。

  • MemcacheEngine 使用 Memcache 扩展。Memcache 提供了一个非常快速的缓存系统,可以分布在许多服务器上,并提供原子操作。

  • RedisEngine 使用 phpredis 扩展。Redis 提供了一个类似于 memcached 的快速持久的缓存系统,也提供了原子操作。


如果您对使用哪一个感到好奇。检查它们的开发状态。

于 2014-01-22T20:48:03.710 回答