Laravel 4缓存机制的实现

时间:2015-04-16 13:59:59

标签: php caching laravel laravel-4

我想知道使用Laravel 4内置数据库查询缓存机制($ query-> remember(10))是多么安全。

我在文档中找不到实现方式,并且,我想知道它是否使用完整数据库查询的某种散列算法和所有绑定(绑定??)值,为了设置缓存的项目密钥(这对我来说足够安全:))

我也想知道实现是否因缓存驱动程序而异。我目前使用文件系统驱动程序。

1 个答案:

答案 0 :(得分:1)

如果你看一下来源

#File: laravel/framework/src/Illuminate/Database/Query/Builder.php
public function remember($minutes, $key = null)
{
    list($this->cacheMinutes, $this->cacheKey) = array($minutes, $key);

    return $this;
}

您可以看到remember方法使用cacheKey对象属性。此属性在getCacheKey方法

中设置
#File: laravel/framework/src/Illuminate/Database/Query/Builder.php
public function getCacheKey()
{
    return $this->cacheKey ?: $this->generateCacheKey();
}

使用generateCacheKey方法创建缓存密钥。

public function generateCacheKey()
{
    $name = $this->connection->getName();

    return md5($name.$this->toSql().serialize($this->getBindings()));
}

在这里,您可以看到Laravel使用

md5哈希生成缓存密钥
  1. 连接名称

  2. SQL查询

  3. 数据绑定的PHP序列化版本(即“所有绑定(绑定??)值”)

  4. 此密钥生成独立于所使用的缓存引擎。