サーバーキャッシュについて

goichi > サーバーキャッシュについて @ 2011/4/1 17:53
お世話になっております。サーバーキャッシュについて、皆さんのお知恵・アイディアをおかりしたく、投稿しています。

現在、制作しているサイトのコンテンツの中で、ページの内容を表示させる前に、「個人情報について」の同意を求める必要があるページがあります。こうしたページは複数あり、「個人情報について」の文面は共通です。

そこで私としては、「layout/use_session.ctp」というレイアウトファイルを1つ作り、その中でセッションを使って、既に文面に同意済みかどうかを判断し、同意済みであればページの内容を表示し、そうでなければ「個人情報について」の文言を表示しようと考えました。そして、個人情報の同意を求める内容のページでは、冒頭で「layout = 'use_session.ctp' ?>」を記述し、該当ページにアクセスがあった場合には、同意済みかどうかを判断し、表示内容を変更するようにさせました。

で、ここからが本題なのですが、デバックモードで作動させていたときは上手に動いていましたが、ノーマルモードにしたとたん、サーバーキャッシュの関係(だと思います)で、常に「同意なし」のページが表示されるようになりました。以下にこのレイアウトファイルの骨格を示します。

■use_session.ctp

<cake:nochace>
<?php
//同意するボタンを押していれば、セッションに値を入れる。
if(!empty($_POST['agree'])){
   $_SESSION['agree'] = 'YES';
}

//セッションに値があるかどうかを確認する。
//同意あり
if(!empty($_SESSION['agree'])){
   //ページ内容を表示
   $baser->content();

//同意なし
}else{
   //個人情報に関する文面と、同意するボタンを生成
   <form action="<?php echo $this->here; ?>" method="post">
      <input type="hidden" name="agree" value="agree" />
   <input type="submit" value="同意して進む" />
}
?>
</cake:nochace>


「同意する」ボタンを押しても、このページが最初の同意なしの状態でキャッシュされているためか、常に「同意なし」のページが表示されてしまいます。「デバッグモード1」あたりにすれば、普通に動くのですが、それも気持ちがよくないので、サーバーキャッシュを上手に制御する方法、アイディアがあればご教示ください。もしかして、nochacheの使い方がおかしいでしょうか・・・?
どなたかお知恵をお持ちの方がいらっしゃいましたら、ご教示ください。m(__)m


* BaserCMSのバージョン:1.6.9
* レンタルサーバー名:さくら
* スマートURLの利用: [ON]
* 設置フォルダ: [サブフォルダ]
* 利用しているデータベース: [MySQL]
* PHPスキル(自己評価): [ C〜D ]
ryuring > Re: サーバーキャッシュについて @ 2011/4/1 18:15
こんにちは。

nocache は、既にキャッシュが削除されている場合は事前に手動で削除してあげる必要があります。
また、nocach内では、BaserHelperが動作しない可能性があります。(コントローラーが呼び出されない為)

それから、特定のページのキャッシュを無効にするには、
ページ編集画面のソースコードビューで、次の一行を記述するとキャッシュされなくなります。

<?php $this->cacheAction = 0 ?>

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

goichi > Re: サーバーキャッシュについて @ 2011/4/4 11:06
さっそくのお返事ありがとうざいました。
大変、助かりました。無事に解決できました。m(__)m
勉強になりました。
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
7 人のユーザが現在オンラインです。 (7 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 7