人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでサイトを作っておりindex.php から config.php というファイルをrequire_onceで読み込んでいる時、config.php を更新してからindex.phpにアクセスしても、304 Not Modified が返ってきてしまいます。そのため、ページの内容がキャッシュから表示されて更新されないという問題が発生しております。

本来データが更新されているので 200 が帰ってくるべきではないかと思うのですが、何か対処法はございますでしょうか。もし何か思い当たるところがあればお教えいただけますと幸いです。
よろしくお願いいたします。



引き続き自分で調べていたのですが、たとえば
index.phpからrequire_once('config.pp');
304 Not modified

●質問者: n_maco2
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●30ポイント

requireを使ったほうがいいのでは ないでしょうか?


n_maco2さんのコメント
なぜrequireにする必要がありますでしょうか? 理由をお教えいただけますと助かります。 一度読むだけなら両方共同じ動作をするかと思うのですが・・

きゃづみぃさんのコメント
require_onceは ファイルが すでに読み込まれているかどうかをチェックしているので 更新されたかどうかは 判定してないと思われますが・・・。

きゃづみぃさんのコメント
私の思い違いでしたら スルーしてください。

2 ● a-kuma3
●172ポイント ベストアンサー

さっきキャンセルした質問で書いてた情報が無いと、情報が足りないと思いますよ。
# 回答がついてない質問をキャンセルすると、内容が見られなくなっちゃいます。


で、さっきの続き。
ヘッダでは、以下のような感じになってるんでしたよね(抜粋)。

Cache-Control:post-check=0, pre-check=0, private, max-age=10800, pre-check=10800
Content-Type:text/html
Date:Fri, 27 Apr 2012 02:16:08 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Last-Modified:Tue, 24 Apr 2012 03:57:42 GMT
Pragma:no-cache


もしかしたら、Apache の設定で ExpireDefault とか指定してます?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13102&forum=12&start=8

ちなみに、Expiresヘッダは「Cache-Controlにmax-ageを含む内容が設定されていた」
場合、Cache-Controlの方が優位に立つようです。

リソースが分からないので、話半分だとしても、キャッシュしたくないレスポンスなのに、
max-age に値が設定されているのは、激しく、気持ち悪いです。


http://z49.org/2010/09/07/488/
Apache で有効期限の設定をしているときのレスポンスヘッダの挙動について、ハマった経験が書いてあります。
ページの真ん中くらいに書いてある、↓って、参考になりますか?

つまり、ExpiresヘッダもScript側で準備しないといけないみたいです。Apache側でこの機能を提供するmod_expiresのドキュメントによるとCache-ControlとExpiresの両方の出力に影響するとの事なのでこの挙動はそう不自然ではありません。


n_maco2さんのコメント
諸々ご回答ありがとうございます。キャンセルすると消えるんですね・・うっかりしておりました。 たくさん情報いただいて一気に理解できないので、取り急ぎお礼申し上げさせて頂きます。確認など行なってからまたコメントさせて頂きます。 ありがとうございます!

n_maco2さんのコメント
ご協力ありがとうございました。 いただいた情報を元にレスポンスヘッダを何をしたらコレが返ってなど細かく検証を始めてみたところ、設定を行なっている箇所を色々いじっても思ったとおりにレスポンスの内容が変わらないことに気づきました。 そこで、いじっている場所以外になにか埋まっているものがあるっぽい!と思って、ライブラリをごそごそあさってみると session_cache_limiter('private'); という記述を発見いたしました。 あれっと思ってあわててこれをコメントアウトして、想定したとおりのレスポンスヘッダが帰ってくることを確認、Cache-Controlをno-cacheにしたりExpireを0にしたりと、教えていただいたURLの内容を参考に変えたところ、無事問題が解決いたしました。 apacheの設定や、phpのheader送出内容ばかり気にしていたもので、ログイン周りで吐き出しているsession関連に気づいておりませんでした。 アドバイスいただき本当にありがとうございました、助かりました!

a-kuma3さんのコメント
微妙に外してたわけですね(やっぱり >< でも、解決して良かったですね。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ