我有1000个对象,每个对象都需要一个“键”。
例如
$this->setItem("1", $object);
$this->setItem("2", $object);
我的问题是,每次使用$this->setItem()
或$this->addItem()
时,Zend都会创建一个包含.dat
文件的新文件夹。
我想为所有对象只创建一个.dat
文件,但是我可以用$this->getItem("key")
因此,我问这两个功能有什么区别?
当然,我可以使用addItem()
函数实现目标。
答案 0 :(得分:6)
缓存的目的是快速检索缓存的结果。 如果ZF2将所有不同的缓存键(及其数据)聚合在一个文件中,则无法快速获取数据,因为需要进行所有昂贵的文件搜索/拆分等操作。 为每个缓存键生成单个文件使此过程变得简单。 ZF2将创建缓存键的MD5哈希值,并可直接从文件系统中检索具有该名称的文件。您看到的不同目录只是哈希的子字符串,因此目录的数量将受到限制。
setItem
将始终将数据写入指定的密钥(如果数据已存在则覆盖)。addItem
只会在没有数据的情况下写入数据。