在 CakePHP 站点 (2.3.1) 上,我注意到每页缓存的视图文件非常大 (10-60MB)。
通常对于网站,我希望缓存只存储纯 HTML 输出,但 Cake 在文件顶部添加了序列化的 PHP。从性能的角度来看,这种大文件大小是有问题的,占用了千兆字节的空间(我们有 1000 多个页面),并且不适合 APC 缓存(默认最大文件大小为 1MB)。
这是缓存视图文件顶部的示例块:
<!--cachetime:1363985272--><?php
App::uses('StaticController', 'Controller');
$request = unserialize(base64_decode('<removed>'));
$response = new CakeResponse();
$controller = new StaticController($request, $response);
$controller->plugin = $this->plugin = '';
$controller->helpers = $this->helpers = unserialize(base64_decode('<removed>'));
$controller->layout = $this->layout = 'default';
$controller->theme = $this->theme = '';
$controller->viewVars = unserialize(base64_decode('<removed>'));
Router::setRequestInfo($controller->request);
$this->request = $request;
$this->viewVars = $controller->viewVars;
$this->loadHelpers();
extract($this->viewVars, EXTR_SKIP);
?>
我宁愿根本没有 PHP,因为下面的 HTML 是静态生成的输出。占所有文件大小的巨大开销。
bootstrap.php 中的缓存设置:
Cache::config('default', array('engine' => 'Apc'));
目前我唯一的选择是提高视图缓存文件的文件大小。目前无法在此服务器上添加类似 Varnish 的内容。
解决文件大小问题的任何提示都会很棒。