Php 数据预缓存

Php 数据预缓存,php,caching,prestashop-1.6,Php,Caching,Prestashop 1.6,我们已经创建了一些自定义页面,在这些页面中我们被迫运行许多sql语句。 数据可以缓存几天,或者直到我们清除缓存 我的问题是它不存储缓存。每次funciton Cache::isStored返回false $cache_id = "test"; if (Cache::isStored($cache_id)) { /// Query data Cache::store($cache_id, $data); } $data = Cache::retrieve($cache_id); ec

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

我的问题是它不存储缓存。每次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);
我想我用错了缓存函数。但我似乎找不到任何关于它的文档

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

Cache::store()
Cache::retrieve()
将数据“本地”存储在类静态变量中,这意味着下次刷新页面时数据将丢失

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

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

对于显示的每个产品,模块将调用价格计算方法,以便向客户显示。由于某些产品在多个模块中可能相同,因此这是一种“本地”或一次请求缓存价格的方法

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

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

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

您认为需要检查
是否(!cache::isStored($cache_id))
然后存储和保存数据,因为就像你说的,它总是返回false。在prestashop 1.6.1.2到1.6.1.19中,在我的例子中使用文件缓存时,它会在每次请求时将文件添加到cachefs目录,但总是返回$cache->exists()false,因此缓存从未工作过。我为prestashop 1.7创建了缓存。请注意:1.7中删除了基于文件的缓存。但是我也在为
memcache
而挣扎。