Prestashop 缓存数据

Prestashop caching of data

我们创建了一些自定义页面,我们被迫 运行 很多 sql 语句。 数据可以缓存几天或直到我们清除缓存。

我的问题是它不存储缓存。每次函数 Cache::isStored returns 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);

我想我用错了缓存功能。但是我似乎找不到它的任何文档。

任何人都可以帮助提供文档或一些示例代码

Cache::store()Cache::retrieve() 会将数据 'locally' 存储在 class 静态变量中,这意味着下次刷新页面时数据会丢失。

如果您有多个模块在一个请求中请求相同的数据,但每次刷新页面时都需要刷新数据,那么以这种方式缓存数据非常有用。

这方面的一个例子是产品的价格计算。假设您在主页上有一个显示每个类别的少量产品的模块,一个用于新产品的模块,一个用于畅销书的模块,每个商店都有一个购物车块模块。

对于每个显示的产品,模块将调用价格计算方法以便将其显示给客户,并且由于某些产品在多个模块中可能相同,因此这是一种缓存价格 'locally' 或针对一个请求的方法。

要缓存超过一个请求的数据,您应该使用

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

$ttl 设置为您希望数据保留多长时间的时间(以秒为单位),或者默认设置为 0,以便它保留在缓存中,直到您手动清除它。