codeigniter输出缓存不起作用?

时间:2012-04-10 15:47:55

标签: codeigniter caching web

我正在使用$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');

}

谢谢!

3 个答案:

答案 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就可以了