Apachehttpd.confに次の行を追加しました。-
AddOutputFilterByType DEFLATE text/html text/css application/javascript application/x-javascript application/json
スクリプトを含むhtmlファイル(test.html)があります:-
<script type="text/javascript" src="/test.js"></script>
問題は、test.htmlをロードするたびに、test.jsにもHTTPステータス200がロードされることです。
問題は、条件付きGETが満たされないのはなぜですか。
httpd.confの「AddOutputFilterByType」行をコメントアウトすると、Apacheは304を送信します。
httpd.confでAddOutputFilterByTypeを有効にすると、リクエストヘッダーは次のようになります。
ホスト:最適化 ユーザーエージェント:Mozilla / 5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10)Gecko / 2009042316 Firefox / 3.0.10 GTB5(.NET CLR 3.5.30729)FirePHP / 0.2.4 承認: */* Accept-Language:en-us、en; q = 0.5 Accept-Encoding:gzip、deflate Accept-Charset:ISO-8859-1、utf-8; q = 0.7、*; q = 0.7 キープアライブ:300 接続:キープアライブ リファラー:http://optimize/ クッキー:PHPSESSID = nbq6h0eeahkshkcbc6ctu2j2b4 If-Modified-Since:Tue、19 May 2009 07:06:46 GMT If-None-Match: "2000000000717f-2c25a-46a3e8dcc2ad8"-gzip キャッシュ制御:max-age = 0
そして、応答ヘッダーは次のとおりです。
日付:2009年5月22日金曜日07:03:40 GMT サーバー:Apache / 2.2.9(Win32)PHP / 5.2.6 最終変更日:2009年5月19日火曜日07:06:46 GMT Etag: "2000000000717f-2c25a-46a3e8dcc2ad8"-gzip Accept-Ranges:バイト 変更:Accept-エンコーディング コンテンツエンコーディング:gzip コンテンツ-長さ:52583 キープアライブ:timeout = 5、max = 98 接続:Keep-Alive コンテンツタイプ:application / javascript
更新:ETagを無効にすると、正しく機能することに気づきました。私はそれが304を送ることを意味します。
FileETag None
しかし、私は本当にETagをそのままにしておきたいと思っています(iノードの開示の問題があることは知っています)。