CakePHP 是否支持 APC、XCache 等?
5 回答
在 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
));
它应该支持 APC 作为操作码缓存——毕竟它只是 PHP 代码。
似乎有一个与 APC 相关的类将 APC 用作数据的缓存:请参阅ApcEngine
.
另请参阅手册:7.2.2 Cake Engines in Cake,其中说支持 APC、XCache、File 和 memcached。
只是为了添加已经提供的其他好的答案,有一些技巧可以让蛋糕使用文件缓存以外的任何东西作为内部缓存。这段代码将使 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');
在 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';
}
请注意,在 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 的快速持久的缓存系统,也提供了原子操作。
如果您对使用哪一个感到好奇。检查它们的开发状态。
- APC:上次稳定版:3.1.9,2011 年 5 月 14 日,http ://pecl.php.net/package/apc
- Wincache:1.3.5,2013 年 9 月 13 日, http: //sourceforge.net/projects/wincache/files/
- XCache:3.1.0,2013 年 10 月 10 日, http: //xcache.lighttpd.net/
- 内存缓存:2.2.7,2012 年 9 月 22 日,http ://pecl.php.net/package/memcache
- Redis:2.8.4,2014 年 1 月 13 日,http ://redis.io/download