Php 使用自定义输出方法时的Codeigniter页面缓存
我想缓存我的页面,这可以通过使用:Php 使用自定义输出方法时的Codeigniter页面缓存,php,codeigniter,caching,Php,Codeigniter,Caching,我想缓存我的页面,这可以通过使用: $this->output->cache(n) 与文档中一样,我可以在控制器中使用一个名为\u output的自定义输出方法 问题是,当我在控制器中创建这个_输出方法时,它不会创建任何缓存文件,只显示输出。我查看了Output核心类,当我看到它没有找到任何带有\u Output的方法时,它只是回显内容 他们在文档中有以下内容,用于my_输出: if ($this->output->cache_expiration > 0) {
$this->output->cache(n)
与文档中一样,我可以在控制器中使用一个名为\u output的自定义输出方法
问题是,当我在控制器中创建这个_输出方法时,它不会创建任何缓存文件,只显示输出。我查看了Output核心类,当我看到它没有找到任何带有\u Output的方法时,它只是回显内容
他们在文档中有以下内容,用于my_输出:
if ($this->output->cache_expiration > 0)
{
$this->output->_write_cache($output);
}
但是缓存过期无法访问…您有两种解决方法
CI\u输出
类(更好)应用程序/core
中创建一个文件名itMY_Output.php
,MY_
前缀位于应用程序/config/config.php
文件中的$config['subclass\u prefix']
选项中
然后把这段代码放在下面:
class MY_Output Extends CI_Output{
public $the_public_cache_expiration_ = 0;
public function get_cache_expiration()
{
$this->cache_expiration_ = $this->cache_expiration;
}
}
我们正在做的是扩展CI\u Output
类并添加我们自己的方法,当调用方法get\u cache\u expiration()
时,它将cache\u expiration
分配给public\u cache\u expiration
,在\u输出上使用它
使用以下方法进行测试:
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
}
谢谢,成功了!
public function _output($output)
{
$this->output->get_cache_expiration();
if($this->output->cache_expiration_ > 0)
{
$this->output->_write_cache($output);
}
echo $output;
}