2016-11-02 3 views
1

いくつかのカスタムページが作成されており、多くのSQL文を実行する必要があります。 データは数日またはキャッシュをクリアするまでキャッシュすることができます。Prestashopデータのキャッシュ

私のprolemはキャッシュを保存していません。 funciton 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

'if(!Cache :: isStored($ cache_id))'をチェックしてから、データを保存して保存する必要があると思います。 –

答えて

2

Cache::store()Cache::retrieve()を支援することができますが、データがページを更新する次の時間を失っていることを意味クラスの静的変数に「ローカル」データを格納します。

このようにデータをキャッシュすることは、1つのリクエストで同じデータを要求するモジュールが複数あるが、ページをリフレッシュするたびにデータをリフレッシュする必要がある場合に便利です。

この例の1つは、製品の価格計算です。各カテゴリーの商品が少ない商品、新商品のモジュール、ベストセラーのモジュール、各ショップにはカートブロックモジュールが表示されたホームページをホームページに掲載します。

モジュールは、顧客に表示されるように価格計算方法を呼び出すため、複数のモジュールで同じ製品を使用できるため、「ローカル」または1つのリクエストに対して価格をキャッシュする方法です。あなたはデータが持続したいどのくらいのために、またはデフォルトで秒の時間にその0を

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

設定$ttlを使用する必要がありますつの要求を超えたデータをキャッシュするために

ので、それはそれを手動で削除するまで、キャッシュ内にとどまります。