mikehaertl / flushable
允许从缓存中清除记录的 Yii 依赖
Requires
- php: >=5.0.0
This package is auto-updated.
Last update: 2024-08-24 03:43:47 UTC
README
此依赖项可用于从缓存中清除项。它允许您使任何缓存项失效,如缓存的 ActiveRecord、DAO 查询结果、缓存片段或缓存页面。
##使用方法
导入类文件
可以在每个您想使用它的类文件顶部添加此行
Yii::import('ext.flushable.FlushableDependency');
或者在您的 main.php
配置文件的 import
部分直接添加 ext.flushable.FlushableDependency
。
如何使用依赖项
创建依赖项时,必须提供一个唯一的 $id
,用于标识您的缓存内容。
$dependency = new FlushableDependency('myKey');
现在您可以用它进行数据、片段或页面缓存。
如果想要缓存一些 ActiveRecord 或 DAO 结果,则通常 $id
是主键。在这种情况下,应该添加模型名称以避免不同缓存的模型类之间的冲突
// Cache a ActiveRecord $dependency = new FlushableDependency($id,'Post'); $post = Post::model()->cache(3600,$dependency)->findByPk($id);
如何从缓存中清除内容
每次您想使缓存数据失效时,现在都可以调用
FlushableDependency::flushItem('myKey');
如果您为数据缓存使用了依赖项并添加了模型名称,则必须再次提供相同的名称
FlushableDependency::flushItem($id,'Post');
您可以将此放入活动记录的 afterSave()
方法中(将 $id
更改为 $this->id
)或只需在更新记录时手动调用它。
您还可以向 flushItem()
调用添加一个 $expire
参数。它将指定更改信息在缓存中保留的时间。因此,这应该比您缓存内容的最长时间更长。默认值为 3600
。
它的工作原理
每次使用此依赖项缓存项时,它都会扫描缓存以查找另一个密钥。这个密钥对每个缓存项都是唯一的,由您传递给构造函数的两个参数组成。这个其他缓存值基本上指示“项目已过期!”。因此,如果没有找到这样的密钥,缓存中的项仍然有效。
通过调用 flushItem()
,您将在缓存中为缓存项创建这样的过期条目。因此,当依赖项下次评估时,它会找到一些内容,缓存内容将不再被视为有效。
变更日志
版本 1.1.2(重要:此更新需要刷新您的缓存!)
- 更改依赖键以完美地与文件缓存一起工作(感谢 yiqing-95)。
版本 1.1.1
- 将依赖值从
time()
更改为microtime()
以解决某些场景中的计时问题
版本 1.1.0
- 重构了类接口
版本 1.0.1
- 初始版本