2016-11-02 182 views
1

我們創建了一些自定義頁面,我們被迫運行大量的sql語句。 數據可以緩存幾天,或者直到我們清除緩存。Prestashop緩存數據

我prolem是不存儲緩存。每次函數Cache :: isStored都返回false。

$cache_id = "test"; 
if (Cache::isStored($cache_id)) { 
    /// Query data 
    Cache::store($cache_id, $data); 
} 

$data = Cache::retrieve($cache_id); 
echo json_encode($data); 

我想我使用的是緩存功能錯誤。但我似乎無法找到任何文件。

任何人可以幫助或者與文件或一些示例代碼

+1

認爲你需要檢查'如果(!緩存:: isStored($的cache_id))'然後存儲和保存數據,因爲像你說的它總是返回false。 –

回答

2

Cache::store()Cache::retrieve()將在類的靜態變量中存儲數據「本地」,這意味着數據丟失在下一次刷新頁面。如果你有多個模塊請求在一個請求相同的數據,但你需要的數據刷新,每次刷新頁面

緩存數據這種方式是非常有用的。的這個

一個例子是產品的價格計算。假設你在主頁上有一個模塊,它顯示了每個類別的少量產品,一個新產品模塊,一個暢銷書模塊,每個商店都有一個手推車模塊。

對於所示所以它的顯示給客戶,因爲有些產品可以在多個模塊中的一樣,這是一種方法來緩存價格「本地」或一個請求的模塊將調用費用計算方法每一個產品。

要超越一個請求緩存中的數據,你應該使用

$cache = Cache::getInstance(); 
$cache->set($key, $data, $ttl); 
$cache->get($key); 
$cache->exists($key); 

設置$ttl時間,以秒爲你想要多久的數據持續存在或默認的0,使其保持在緩存中,直到您手動清除它。