2

perl で生成されたページがあります。このページのコンテンツは 30 分ごとに変更されるため、$r->set_last_modified() をコンテンツが最後に変更された時刻に設定しています。

これで問題なく動作し、ブラウザに正しいヘッダーが届いていることがわかります。

ページを更新すると、ブラウザがサーバーへのリクエストで正しい「If-Modified-Since」ヘッダーを使用していることがわかりますが、Apache2 はこれを無視してページ全体を再送信します。

Apache2 を正しく動作させ、"HTTP/1.x 304 Not Modified" で応答させるにはどうすればよいですか?

(「last-modified」/「if-modified-since」ヘッダーは、同じ Apache2 プロセスから静的コンテンツを要求するときに正しく処理されます。)

助けてくれてありがとう。

編集: 私の期待は間違っていますか? Perl スクリプトでインバウンドの If-Modified-Since ヘッダーを明示的に処理する必要がありますか?

4

2 に答える 2

4

残念ながら、あなたの期待は間違っています。

基本的にApacheに「OK、このリクエストを処理しています...」と言う時点で、Apacheはすべての責任をあなたに引き渡します。If-Modified-Since を尊重するリクエストが必要な場合は、コード次第です。

それに直面して、これは正しい動作です。なぜなら、Perl ハンドラーで「変更された」という言葉が/実際に/何を意味するのかを Apache が知る方法はないからです。レコード、例えば....

于 2009-04-24T10:45:13.663 に答える