Prestashop数据缓存

And*_*sen 2 php caching prestashop-1.6

我们创建了一些自定义页面,我们不得不在其中运行大量sql语句。数据可以缓存几天或直到我们清除缓存为止。

我的问题是它不存储缓存。每当函数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);
Run Code Online (Sandbox Code Playgroud)

我认为我使用的缓存功能不正确。但是我似乎找不到任何文档。

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

The*_*rot 5

Cache::store()Cache::retrieve()将存储在该装置内的数据丢失在下一次刷新页面类的静态变量数据“本地”。

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

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

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

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

$cache = Cache::getInstance();
$cache->set($key, $data, $ttl);
$cache->get($key);
$cache->exists($key);
Run Code Online (Sandbox Code Playgroud)

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

  • 我为 prestashop 1.7 创建了[这个问题](https://github.com/PrestaShop/PrestaShop/issues/12265)。请注意:基于文件的缓存在 1.7 中已被删除。但我也在与“memcache”作斗争。 (3认同)