2013-02-26 178 views
3

我有一個在cakephp開發的網站。我想緩存一個查詢。我已閱讀的文檔,我有我的bootstrap.php此:緩存查詢cakephp

Cache::config('default', array('engine' => 'File')); 

Cache::config('short', array(
    'engine' => 'File', 
    'duration' => '+1 hours', 
    'path' => CACHE, 
    'prefix' => 'cake_short_' 
)); 

// long 
Cache::config('long', array(
    'engine' => 'File', 
    'duration' => '+1 week', 
    'probability' => 100, 
    'path' => CACHE . 'long' . DS, 
)); 

我的存儲查詢控制是這樣的:

public function test_view() { 
    $product_general = Cache::read('product_general_query', 'longterm'); 
     if (!$product_general) { 
      echo("test"); 
      $product_general = $this->Product->query('SELECT DISTINCT * FROM products'); 
      Cache::write('product_general_query', $product_general, 'longterm'); 
     } 

     $this->set('product_general', $product_general); 
} 

每次我進入到頁面打印我的「測試」,因爲沒有找到緩存中的查詢。哪裏有問題?我想念什麼?

回答

3

你命名你的緩存配置'long'您core.php中內,但使用配置'longterm'你的行動中

此外,如果已經啓用調試(例如調試在core.conf設置爲1或2),高速緩存持續時間可以自動設置爲10秒。不知道這是否也適用於你自己的緩存定義,儘管

+0

我已經改變長期以來,現在的作品..!但我不知道大約10秒鐘,我可以將時間配置到我的引導程序中嗎? – 2013-02-26 21:51:13

+0

是的,但我認爲調試隻影響默認的緩存配置,所以你自己的配置可能會好。我一直在想,爲什麼緩存可能不工作。 – thaJeztah 2013-02-26 21:52:50

+0

我現在有測試,我等了2分鐘,但是echo不打印,現在我的緩存比2分鐘長,我繼續測試多少時間存儲,謝謝 – 2013-02-26 21:54:17