2017-02-10 8 views
0

入力を考慮に入れてCodeIgniterページキャッシュを取得するにはどうすればよいですか?たとえば、ページネーションシステムがあるとします。キャッシュを有効にして、1ページ目に行くと、2ページ目(同じコントローラ)... CIキャッシュはページ1のコンテンツを返します。Codeigniterのページキャッシュは入力を考慮していませんか?

function my_controller() { 
     $this->output->cache(1); 

     $page = $this->input->post("page"); 
     $data = getData($page); 

     $this->load->view('my_view', $data); 
    } 

上記の例では、ページを正しくパンすることはできません。投稿された入力が変更されても、キャッシュされたページの読み込みが続けられます。

キャッシュシステムに$ _POSTデータを考慮し、それらをキャッシュの観点から異なる要求として扱うにはどうすればよいですか?

答えて

0

ビューは、キャッシングクラスに目立った変更は厄介得ることができているのキャッシング動的なコンテンツ...

最も簡単な解決策は、キャッシュがとにかく何のためにあるのか、本当に、動的なページをキャッシュしません。そのことで、キャッシュがあります(少なくとも、ほとんど)静的データを意味します。

JavaScriptを使用してクライアント側にページを設定し、サーバーからデータを取得するためにajax呼び出しを使用すると、クライアントは実際には単一のビューを残すことはありません。ビューはキャッシュされます。

コンテンツはどのくらいの頻度で変更されますか?分単位で変化する注文のリスト、あるいは毎月変わる製品のリストのように話していますか?

もしajaxでロードされた場合は、あなたが呼んでいるものがキャッシュに公開されていないことを確認してください(コンテンツがほとんど変更されない限り)...別のメソッドから呼び出されるので、たびたび最初のxx個の結果を新鮮なものと呼びますが、残りのビューではキャッシュの利点があります。

+0

コンテンツは数日おきにしか変更されませんが、A LOTと呼ばれます。だから、私は定数処理/ db呼び出しを防ぐ方法を探しています。私は本質的に有効期限(3日)を設定するのが大好きで、コントローラーが同じ入力でヒットすると、すべての作業をやり直す代わりにキャッシュされたファイルを返します。 – VDH

+0

dbサーバーの速度低下に問題がありますか?データベースサーバーは実行計画などを実行するので、ハードヒットしたクエリのキャッシュを保持する傾向があることに注意してください。問題が発生していない場合は、それだけの価値はありません。クエリがスカラでいっぱいでない場合、特にデータを取得するのはどのデータベースですか。 –

+0

どのデータベーステクノロジを使用していますか? MySQL、PostgreSQL、SQL Server? –

関連する問題