やったこと

webサービスを作るときに考えたことを垂れ流します

【CakPHP3】クリアしてもキャッシュが消えない!

CakPHP3のキャッシュ機能の話です。

「app.php」に以下のような感じの設定をして、キャッシュをwriteコマンドで保存してみたんです(キャッシュファイルは「/tmp/cache/hogege/」に保存されます)

    'Cache' => [
        'test' => [
            'className' => 'File',
            'duration' => '+10 seconds',
            'path' => CACHE.'hogege'.DS,
        ],
//キャッシュ保存!
Cache::write('test_key_hoge', 'テスト文章だよ!', 'test');


そしてキャッシュを削除しようとして「Cache::clear(true);」とか「Cache::gc('test')」とかを実行してみたんですけど、なかなかうまく削除できません・・。

しばらく調べてみたところ、「Cache::clear」とか「Cache::gc」とかは、「FileEngine」(memcacheとか)を使っているときに使うコマンドのようです。

私は上記の設定の通り「File」キャッシュを使っているので、「Cache::delete」の方を使わないといけなかったんですね・・。

以下のコマンドでうまくキャッシュを削除できました。

Cache::delete('test_key_hoge', 'test');


「Cache::delete」だと「期限切れのキャッシュだけ削除する」みたいな器用なことができなくて、いろいろ不便ですね・・。

やっぱ背伸びして「FileEngine」を使った方がいいのかしら・・。

もっと詳しい情報を知りたい人公式ページをご参照あれ。
http://book.cakephp.org/3.0/en/core-libraries/caching.html

以上!