选择Codeigniter输出 - 从缓存或渲染视图

时间:2012-07-09 11:52:50

标签: codeigniter caching codeigniter-2

据我所知,Codigniter缓存适用于匹配URI。因此,如果在包含表单的方法中设置了缓存,则它将始终显示空表单。

有没有办法设置是显示缓存文件还是渲染视图?

伪代码:

if form validation = FALSE
    serve cache file
else
    render view
endif

还有一种方法可以检查表单是否正在显示,因为它是第一次加载,或者是否因为有错误而显示?

2 个答案:

答案 0 :(得分:1)

使用Codeigniter缓存方式,无法有条件地从缓存中显示。因为Codeigniter决定在调用控制器本身之前从缓存中显示。

您可以使用自定义缓存库。 Codeigniter有几个缓存库。您可以尝试https://github.com/philsturgeon/codeigniter-cache

答案 1 :(得分:0)

您可以根据输出提供的条件有条件地设置缓存。虽然它不会从缓存中呈现您的“视图”,但如果您对表单进行任何繁重的处理,它将显着提高您的性能。

例如,您可以在控制器中执行此操作:

$this->load->driver('cache');

if (!$this->form_validation->run())
{
    if (!$cache = $this->cache->get('some unique variable'))
    {
        $cache = $this->some_model->some_function();
        // Do your rendering here.
    }
}

$this->load->view('some_view', array('data' => $cache));

这样你就可以使用像文件缓存,memcached或apc这样的东西来缓存变量。