2012-03-19 11 views
0

私はウェブアプリケーションを作成していますが、キャッシュが大きすぎるという重大な問題があります。私はCakePHP 2.0を使っています。キャッシング - ベストプラクティス

とにかく基本的に私が気付いている問題は、ブラウザが私のアプリのやり方をあまりにも頻繁にキャッシュすることです。たとえば、ユーザーがフォームに記入してからフラッシュメッセージを追加し、ユーザーをダッシュ​​ボードにリダイレクトすると、フラッシュメッセージは正常に表示されますが、ページを更新するまで表示されます。したがって、そのページから離れてナビゲートすると、フラッシュメッセージが表示されます。それはほんの少し刺激剤ですが、より大きな問題はユーザーの行動に応じてページが実際に変化するときです。

たとえば、管理者側では、何らかの方法でダッシュボードを変更するユーザーステータスを更新することがあります。問題は、更新されたダッシュボードが更新されずに表示されないことです。どんな面倒です!

私の質問は、これを修正する方法ではありません、私はすべて一緒にキャッシュを停止する方法を知っています。キャッシングはWebアプリケーションのパフォーマンスの重要な部分ですが、キャッシングをすべて停止する必要はなく、遅くなることがわかります。

これらの状況では通常何が行われますか?ページをすべて一緒にキャッシュするのを止めるべきですか?極端な解決策のようです。または私はちょうどのようなもので、私のすべてのページにリンクする必要があります

http://mywebsite.com/user?t=<?php echo time(); ?> 

それとも私が欠けている何か他のものがありますか?アドバイスありがとうございます!

答えて

2

回答の概要は、How do I completely disable caching in Cakephp?となりますか?

フラッシュメッセージの問題を解決するのは難しい - フラッシュメッセージが出力HTMLの一部であるため、バックボタンイベントでそれを取り除く方法はありません。

ダッシュボードでは、ブラウザのキャッシュをオフにすることをお勧めします...しかし、それはCakePHPが持つinbuiltキャッシュを解決するものではありません。

更新がある場合にのみキャッシュを無効にする何らかの方法があります。save()イベントが成功するとキャッシュを完全に削除するadd()/ edit()メソッドにメソッドを追加できます - それはあなたのケースでうまくいくかもしれない単なる簡単な方法ではないようです。

+0

私がやったことは、$ this-> response-> disableCache();私のAppControllerのbeforeRender()コールバックに渡します。これは、ヘッダーを呼び出して、ブラウザにキャッシュしないように指示します。どうやらそれはまだHTML/CSS/JSだけではないイメージをキャッシュしていますか?とにかく私の解決策は、ブラウザのキャッシュをすべて停止してから、CakePHP固有のキャッシュを追加することです。そうすれば、キャッシュされているものとキャッシュされていないものをより詳細に制御できます。私はこれがいいアイデアかどうかは分かりませんが、ブラウザのキャッシングは本当にすべてを苦労しています。 –

+0

イメージは確実にキャッシュされるかもしれません - それはCakePHP設定ではなく、サーバー/ Apache設定です。サーバー/ Apacheを管理している場合は、Apacheのキャッシュ/有効期限設定を見て、イメージやその他の静的アセットキャッシングを無効にすることができます。 – Suman