2012-07-09 47 views
0

据我所知,Codigniter缓存适用于匹配URI。因此,如果缓存设置在包含表单的方法中,它将始终显示空表单。选择Codeigniter输出 - 从缓存或渲染视图

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

伪代码:

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

也就是有没有办法来检查是否正在显示的形式,因为它是第一个负载或者正在显示它,因为有错误?

回答

1

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

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

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)); 

这样,你可以使用类似文件缓存,分布式缓存或APC缓存的变量。