- 締切済み
session_cache_limiterの使い方
警告 ページの有効期間切れと表示される場合は session_cache_limiter('private'); という1文を追加すればいいとあったので、ソースの1番上に追加しました。 それで、あるページでセッション変数を定義して、別のページではそのセッション変数があるかないかで何か処理を動かすということをやりたいのですが、セッション変数が無い状態でキャッシュされている(キャッシュの使い方が違っていたらすみません)ようで、その処理を動かすためには1回更新をかけないといけません。この場合はどのようにしたらいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hrm_mmm
- ベストアンサー率63% (292/459)
あ、'private'と'nocache' を勘違いして述べてしまいました。済みません。 >キャッシュというのは、再読み込みしやすい場所へ一時的に保存する 逆です、再読込しなくてよいように、回線のトラフィックを減らす為にブラウザのパソコン内にページデータを保存すると言うことです。よって、キャッシュがあれば、再実行はされません、ユーザーが自分で再実行してくれと更新をかけないとなりません。 常に更新させたいなら、'nocache' とすべきでしょう。
- hrm_mmm
- ベストアンサー率63% (292/459)
キャッシュの意味を勘違いしておられるようです。 session_cache_limiter('private'); これは、ブラウザに「このページを保存しないでね。」というheaderを送信するためのものです。 よって、別ページへ行けば、そのページにまだ訪れていなければ、普通に表示されます。 更新ボタンを押せば、キャッシュはないので、「警告 ページの有効期間切れ」が表示されます。 session で何がしたいのか、が、つかみ切れていないのですけど、 ページをまたがって、sessionの期限切れ表示を行いたいなら、プログラム側で、session データとして最終アクセス時刻などを保存して、プログラム側でページの有効期限切れを表示させることになるのでは?
補足
PHPマニュアルにはキャッシュリミッタがprivateというのは「プロキシがキャッシュすることは許可しませんが クライアントがキャッシュすることは許可される」とありました。クライアントがキャッシュすることを許可するというのは、ブラウザにページの保存を許可するということではないのでしょうか? キャッシュというのは、再読み込みしやすい場所へ一時的に保存するということではないんでしょうか?いまいちキャッシュの意味がつかみきれていません。
お礼
回答ありがとうございます。 >常に更新させたいなら、'nocache' とすべきでしょう。 あるページの有効期間切れ対策のサイトで「当関数を呼ばない場合、自動的にsession.cache_limiterに指定された値が適用されるらしい。そのデフォルト値は'nocache'であるらしい。」とありました。 これでは、session_cache_limiterを使っていない状態と同じですよね?警告 ページの有効期間切れと表示されてしまうのでは?、と思います。 ある別のサイトでは再リロードするには"private, must-revalidate"を使うとありますが、また別のサイトではこのリミッタは無効であるとしています。実際に、効果はありませんでした。 ページの有効期間切れ対策の根本的な解決策は見つかっていないということなんでしょうか?