Fat Free Framework 动态缓存过期
Fat Free Framework dynamic cache expiration
我正在尝试通过尽可能使用缓存查询来改进我的 Fat Free Framework Web 应用程序。
我想知道通过应用一点点 'trick'.
来尝试缓存涉及变化相当频繁的数据的查询是否有意义
IE,通常你不会缓存这个:
SELECT * FROM tasks WHERE status = 'open';
但是,如果我可以改为无限期地缓存它,并在特定事件(例如,在这种情况下,任务关闭)发生时让外部因素清除它的缓存怎么办?
如果这是我的查询:
$tasks = $this->db->exec(
array(
"SELECT *
FROM tasks
WHERE status = 'open'"
),
NULL,
86400
);
有什么方法可以强制其 24 小时长的缓存版本提前过期吗?
是:
解决方案 #1:
清除整个缓存内容:$f3->clear('CACHE')
解决方案 #2:
标记您的缓存查询:
$tasks = $this->db->exec(
array(
"SELECT *
FROM tasks
WHERE status = 'open'"
),
NULL,
[86400,'mytag'] // << tag defined here
);
那么你可以只清除匹配这个标签的缓存内容:
Cache::instance()->reset('mytag');
我正在尝试通过尽可能使用缓存查询来改进我的 Fat Free Framework Web 应用程序。
我想知道通过应用一点点 'trick'.
来尝试缓存涉及变化相当频繁的数据的查询是否有意义IE,通常你不会缓存这个:
SELECT * FROM tasks WHERE status = 'open';
但是,如果我可以改为无限期地缓存它,并在特定事件(例如,在这种情况下,任务关闭)发生时让外部因素清除它的缓存怎么办?
如果这是我的查询:
$tasks = $this->db->exec(
array(
"SELECT *
FROM tasks
WHERE status = 'open'"
),
NULL,
86400
);
有什么方法可以强制其 24 小时长的缓存版本提前过期吗?
是:
解决方案 #1:
清除整个缓存内容:$f3->clear('CACHE')
解决方案 #2:
标记您的缓存查询:
$tasks = $this->db->exec(
array(
"SELECT *
FROM tasks
WHERE status = 'open'"
),
NULL,
[86400,'mytag'] // << tag defined here
);
那么你可以只清除匹配这个标签的缓存内容:
Cache::instance()->reset('mytag');