mikehaertl/flushable

允许从缓存中清除记录的 Yii 依赖

安装数: 7,125

依赖者: 0

建议者: 0

安全性: 0

星标: 3

关注者: 1

分支: 2

开放问题: 0

类型:yii-extension

1.1.2 2014-01-16 08:51 UTC

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

  • 初始版本