2010-11-07 53 views
2

我們的軟件使用元素緩存在CakePHP的應用程序下面的方法:在CakePHP中,元素緩存沒有做任何事情

示例代碼:

<?php echo $this->element('cities-index', array('Cache' => array('time' => "12 hours")));?> 

根據相關文檔,這應該只是罰款。

我已經分離出這種說法是我們的​​網頁加載的主要原因慢(這個操作成本我們0.2秒每頁執行),我已經得出這樣的緩存是做絕對沒有發現。

緩存在core.php中啓用並設置爲文件和應用程序的/ tmp文件夾有正確的權限。我們已經苦心經歷了CakePHP文檔並且被難住了。

我們將不勝感激任何幫助,謝謝!

回答

0

我不知道什麼是你的緩存配置,但對我來說緩存的元素並不意味着你緩存控制器和模型調用(這裏我認爲是真正的瓶頸)。嘗試緩存數據庫調用,並且您的應用程序可能會變得更快。

+0

我們啓用上的控制器級緩存中,通過引用緩存助手,以及$所有密集型數據庫調用cacheActions。請原諒我,如果我錯了,但不是元素緩存等同於「片段緩存」的意思,它應該繞過任何和所有的計算,並簡單地呈現緩存的HTML輸出? – Mark 2010-11-08 06:12:01

+0

不是,因爲控制器代碼已經在視圖代碼之前執行過,所以它已經被執行以及DB調用。只要確保你緩存結果。 – 2010-11-08 07:38:24

+0

有趣,感謝您的解釋。不幸的是,我們已經在控制器中進行緩存,但我會研究該部分是否正常工作。謝謝您的幫助。 – Mark 2010-11-08 07:53:01

0

您的調試級別設置爲?某些調試級別(1或2 - 我不記得)會禁用緩存。

這也可以CakePHP的1.2.x版本1.3.x版和之間變化 - 所以知道什麼版本將是有益的了。

1

小寫的「緩存」 「12小時」,而不是'12小時 增加了一個關鍵

$this->element('cities-index', array('cache' => array('key'=>'cities-cache','time' => '+12 hour'))); 

聶第一,但在原來的信息的評論中發佈了正確的答案。它可能沒有被注意到。