我正在使用$this->output->cache(n)
来缓存网页,但我无法弄清楚它是如何工作的......我在system/cache
文件夹下找不到任何缓存文件......我编辑后也是如此页面并再次显示,内容更改,所以似乎页面没有真正缓存。有人可以帮忙吗? (我正在使用phil的模板库)
我的代码:
function show(){
$this->output->cache(5);
$this->load->model('page_model');
$var = $this->uri->segment(3, 0); //get About page
$row = $this->page_model->getPage($var);
$this->template->title('about')
->set_layout('default')
->set_partial('styles', 'css')
->set('data', $row->body)
->build('about');
}
谢谢!
答案 0 :(得分:3)
两件事,as outlined in the documentation:
警告:由于CodeIgniter存储输出内容的方式,缓存仅在您使用view为控制器生成显示时才有效。
也许不使用“原生”观点是一个问题?
此外:
注意:在写入缓存文件之前,必须在应用程序/缓存文件夹上设置文件权限,使其可写。
您确定application/cache
目录具有正确的权限吗?
答案 1 :(得分:1)
调试此文件并检查它是否实际编写了缓存: 系统/核心/ Output.php
// Do we need to write a cache file? Only if the controller does not have its
// own _output() method and we are not dealing with a cache file, which we
// can determine by the existence of the $CI object above
if ($this->cache_expiration > 0 && isset($CI) && ! method_exists($CI, '_output'))
{
$this->_write_cache($output);
}
这对我很有用:
function _output($content) {
// Load the base template with output content available as $content
$data['content'] = &$content;
$this->output->cache(600);
$output = $this->load->view('base', $data, true);
$this->output->_write_cache($output);
echo $output;
}
答案 2 :(得分:1)
您确定您的应用程序/缓存目录是否具有正确的权限吗?
你在cpanel中的目录应用程序/缓存,权限变为777就可以了