3

我有一个用 cakephp 开发的网站。我想缓存一个查询。我已经阅读了文档,并且在我的bootstrap.php这个:

Cache::config('default', array('engine' => 'File'));

Cache::config('short', array(
    'engine' => 'File',
    'duration' => '+1 hours',
    'path' => CACHE,
    'prefix' => 'cake_short_'
));

// long
Cache::config('long', array(
    'engine' => 'File',
    'duration' => '+1 week',
    'probability' => 100,
    'path' => CACHE . 'long' . DS,
));

我存储查询的控制器是这样的:

public function test_view () {
    $product_general = Cache::read('product_general_query', 'longterm');
        if (!$product_general) {
            echo("test");
            $product_general = $this->Product->query('SELECT DISTINCT * FROM products');
            Cache::write('product_general_query', $product_general, 'longterm');
        }

        $this->set('product_general', $product_general);
}

每次我进入页面时,它都会打印我“测试”,因为没有在缓存中找到查询。哪里有问题?我错过了什么吗?

4

1 回答 1

3

'long'在 core.php 中命名了缓存配置,但'longterm'在操作中使用了配置

此外,如果您启用了调试(例如,在 core.conf 中将调试设置为 1 或 2),缓存持续时间可能会自动设置为 10 秒。不确定这是否也适用于您自己的缓存定义

于 2013-02-26T21:47:46.840 回答