1

私は次の問題を抱えています: 私の cakephp アプリはキャッシュを適切に処理していません。Google のすべての結果で示唆されているように、キャッシュを手動で削除する関数をモデルに作成しました。

public function afterSave($created) {
    Cache::clear();
    clearCache();
}

残念ながら、これは何もしていません。何も削除されませんが、まだ問題があります。

私が自分自身を適切に説明していない場合に備えて、何が起こるかの例を挙げます:

ブラウザーで、データベース内の最新の 5 つのレコードのリストを表示するページに移動します。次に、別のレコードを追加します。過去5件のページに戻ってきましたが、情報が更新されていません。キャッシュを使用し、古い情報で戻ってきます。F5 を押すと、ページが完全にリロードされ、最後の 5 つのレコードが完全に表示されます。

それだけです、私は何をすべきかわかりません。アプリ全体ががらくたのように機能します。何かを行っても、F5 キーでページを更新しない限り表示されないためです。これはもちろん、ユーザーが気づいていないことであり、実際には何も追加されていなかったと思われます。

4

3 に答える 3

1

Cache::clear()有効期限が切れたエントリのみをクリアします。

試してみてくださいCache::clear(FALSE)。CakePHP 2.x があれば動作します。

于 2012-09-09T01:43:35.890 に答える
0

私は問題を解決するためにこれを行いました: コントローラーでは、 beforefilter 関数内でチェックを行い、アクションが何かである場合はキャッシュを無効にしました。

選択したアクションにはブラウザー キャッシュがありません。

function beforeFilter(){
    if ($this->action == 'youraction'){
       $this->disableCache();
    }
}
于 2012-09-08T21:28:22.617 に答える