我想缓存我的页面,可以通过使用:
来完成$this->output->cache(n)
在文档中,我可以在控制器中使用自定义输出方法,名为 _output 。
问题是,当我在控制器中创建此_output方法时,它没有创建任何缓存文件,只显示输出。我查看了输出核心类,当我看到它没有找到 _output 的任何方法时,它只是回显内容。
他们在文档中有这个,在我的_output中使用:
if ($this->output->cache_expiration > 0)
{
$this->output->_write_cache($output);
}
但是无法访问cache_expiration ......
答案 0 :(得分:1)
你有 2 解决这个问题的方法,
cache_expiration
公开而不是受保护并弄乱核心文件( DIRTY WAY )CI_Output
类(更好)在MY_Output.php
application/core
文件的MY_
选项中找到$config['subclass_prefix']
前缀,在application/config/config.php
处创建一个文件名。
然后把这一小段代码:
class MY_Output Extends CI_Output{
public $the_public_cache_expiration_ = 0;
public function get_cache_expiration()
{
$this->cache_expiration_ = $this->cache_expiration;
}
}
我们正在做的是扩展CI_Output
类并添加我们自己的方法,当调用方法get_cache_expiration()
时,它会将cache_expiration
分配给the_public_cache_expiration_
,在_output
上使用它。
使用它来测试它:
public function _output($output)
{
$this->output->get_cache_expiration();
echo '<pre>';
print_r($this->output->the_public_cache_expiration_);//get only our cache expiration
echo '<hr>';
print_r($this->output);//print the whole Output class
}
好处:
这是使用中的基本_output
方法
public function _output($output)
{
$this->output->get_cache_expiration();
if($this->output->cache_expiration_ > 0)
{
$this->output->_write_cache($output);
}
echo $output;
}