RSS

キャッシュデータの取得

13 2月

おっと先日の文字コードについては追ってまた詳細を書きます(試せてない)。コメント、ありがとうございました!
さて、昨日。こんな現象がおきてた。

  • 新規登録をする(画面A)
  • 登録が終わったら、自分の画面に戻る(遷移する)(画面B)
  • そのまま、さらに編集画面にいく(画面A)
  • この時、画面Aは新・更新画面をかねているんだけど、編集画面に戻ったときのA画面に何の表示もない(登録情報が表示されない)。
    変更の場合もそうで

  • 1.A画面で情報を更新する
  • 2.編集が終わり、画面に遷移する(画面B)
  • 3.再度、リンクから編集画面にいく(画面A)
  • ここで3.のA画面では1.で修正した内容が反映されていない。2.のB画面でデータベースを参照してみると、データはちゃんと変更されている。はじめ開発環境のせい?と思ったんだけどどうやらIEにキャッシュを自動参照するかどうかのオプション設定があり、それを「判断しない」にするとIEがキャッシュと判断して読み込みを行わない、という現象。他のブラウザにもあるのかどうかわからないけど、これ、ちょっと困るよね…。データが更新されているのに勝手にキャッシュを読み込まれるのはまずいのだけど、core.phpのほうで何か設定をすればいいのだろうか…。キャッシュを無効にすればいいのかもだけど、キャッシュ自体を全て無効にするというのも…。みんなどうやってるんだろうか。
    ちなみに設定は下記だけ。特別は設定はしていません。
    うーん、困った。皆さんどうしているのでしょうか・・・。

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

    2010.02.15コメントをいただいたとおり、本日app/app_controller.phpに下記の記述をしました。

    	function beforeFilter(){
    		$this->disableCache();
            }
    

    これで、ブラウザのキャッシュが無効になりました!ブラウザが勝手にキャッシュを参照して困る!っていうシーンはあるかと思うので、これは今後の開発でも忘れないようにしないといけないですね。

    広告
     
    2件のコメント

    投稿者: : 2月 13, 2010 投稿先 cakephp

     

    キャッシュデータの取得」への2件のフィードバック

    1. cakephper

      2月 13, 2010 at 2:55 pm

      ブラウザのキャッシュを無効化する場合は、コントローラで最初に、
      $this->controller->disableCache();
      とすると良いですよ。HTTPヘッダに色々と出力してくれるやつなので、画面表示前にやっておくと良いです。beforeFilterとかで。

       
      • yashio

        2月 13, 2010 at 3:27 pm

        あ、なるほど・・・。ブラウザのキャッシュを無効化ってことですね。色々混同していました。
        基本的に全てのコントローラーでやっておいても大丈夫そうですね。非常に参考なりました。ぜひやってみまっす。
        ありがとうございました!

         

    コメントを残す

    以下に詳細を記入するか、アイコンをクリックしてログインしてください。

    WordPress.com ロゴ

    WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

    Twitter 画像

    Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

    Facebook の写真

    Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

    Google+ フォト

    Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

    %s と連携中

     
    %d人のブロガーが「いいね」をつけました。