2016-11-02 183 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,使其保持在缓存中,直到您手动清除它。