php - Prestashop 缓存数据

标签 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);

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

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

最佳答案

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

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

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

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

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

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

设置 $ttl以秒为单位表示您希望数据保留多长时间或默认为 0,因此它会保留在缓存中,直到您手动清除它。

关于php - Prestashop 缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40381202/

相关文章:

php - 尝试显示两个表中的数据

caching - 使用Varnish完全排除子域

java - Maven docker缓存依赖

PHP - 随机回合行为问题

php - 将 XML 产品导入 Prestashop

php - 这个查询迭代是否可能

php - 测试文件下载,但禁止在命令行上输出文件内容

php - 用php创建查询

java - 如何在两个数据集选项(如 DB)之间使用类似的减法来设计 Redis 搜索/扫描算法

php - Context::getContext() 如何在 Prestashop Bankwire 模块中使用