2012-07-09 50 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緩存的變量。