header("Last-Modified: ほげほげ");
を投げとけばPHP(というかApache HTTP Serverか?)が勝手にユーザのIf-Modified-Sinceを処理して304にするか200にするかを判断してくれると思っていた私が間違いだった。
自力でユーザの投げたヘッダを解析して304か否かを判断せねばならないらしい。そりゃないぜ、と思う。それって、あっちゃいけないんじゃ?
とりあえずこのページは暫定対処してみたが、こんな処理を毎回書くことが正しいとは思えない。PHPのモジュールのコードを読んでみようとひそかに思った。PHPのインタプリタがheader("Last-Modified: ほげほげ");
を検出した時点で判断して、古ければ勝手に304を返してexit、というのがユーザの想定する処理だろうと思う。