2011-11-12 6 views
0

とページキャッシュ:CodeIgniterの - 私はデフォルトのCodeIgniterのページキャッシュなど使用していますサブドメイン

$this->output->cache(n); 

私の問題は、同じページが返される、すなわち、私は2つの異なるコントローラ内にこれを使用して、重複キャッシュされたページを取得していますということですが両方のための。私は両方でキャッシュを有効にすると

mobile.mysite.com =>コントローラー1

mysite.com =>コントローラ2

:私はこれが原因サブドメインなどを使用していると考えています私は同じページを返す。

どのようにそれぞれ別のキャッシュを生成できますか?

よろしくお願いします。

答えて

0

デフォルトでは、出力キャッシュはコントローラベースです。したがって、コントローラの名前が同じであれば、同じキャッシュが生成または使用されます(キャッシュディレクトリが両方の場所で同じ場合)。

最も適切な回避策は、キャッシュドライバを使用してキャッシュを手動で保存することです。コントローラコードの例を次に示します。

public function index() 
{ 
    // If we have a cache just return it and be done. 
    if ($mobile = $this->cache->get('page_mobile') AND $this->agent->is_mobile()) 
    { 
     $this->output->set_output($mobile); 
     return TRUE; 
    } 
    elseif ($page = $this->cache->get('page)) 
    { 
     $this->output->set_output($page); 
     return TRUE; 
    } 

    $vars = array(); 

    // Save a cache and output the page. 
    if ($this->template->is_mobile) 
    { 
     $home = $this->load->view('page_mobile', $vars, TRUE); 
     $this->cache->save('controller_mobile', $home, 500); 
     $this->output->set_output($home); 
    } 
    else 
    { 
     $home = $this->load->view('page', $vars, TRUE); 
     $this->cache->save('controller', $home, 500); 
     $this->output->set_output($home); 
    } 
} 
+0

これは非常に役に立ちます。 – Ben

関連する問題