Cache-Control HTTP 応答ヘッダーが Apache httpd では機能しません。

Cache-Control HTTP 応答ヘッダーが Apache httpd では機能しません。

1週間ApacheでJSファイルのCache-Controlを設定しましたが、ブラウザを確認するとCache-Controlにキャッシュが表示されません。どこで構成がありませんか?

以下はApacheでの設定です。

<ifModule mod_headers.c>

  <filesMatch "\.(html|htm|png|js|css)$">
   Header set Cache-Control "max-age=604800, public"
  </filesMatch>

</ifModule>

ブラウザからヘッダーをリクエスト

    Request URL:http://test.com/Script.js?buildInfo=1.1.200
    Request Method:GET
    Status Code:200 OK
    Request Headersview source
    Accept:*/*
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:en-US,en;q=0.8
    **Cache-Control:no-cache**
    Connection:keep-alive
    Host:test.com
    Pragma:no-cache
    Referer:http://test.com/home.jsp
    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like      
    Gecko) Chrome/37.0.2062.120 Safari/537.36
    Query String Parametersview sourceview URL encoded
    buildInfo:1.1.200

    Response Headersview source
    Cache-Control:max-age=2592000
    Connection:keep-alive
    Content-Encoding:gzip
    Content-Type:text/javascript
    Date:Sun, 12 Oct 2014 16:17:46 GMT
    Expires:Tue, 11 Nov 2014 16:17:46 GMT
    Last-Modified:Tue, 07 Oct 2014 13:28:08 GMT
    Server:Apache
    Transfer-Encoding:chunked
    Vary:Accept-Encoding

答え1

Debian を想定してヘッダモジュールを有効にする必要があります。

sudo a2enmod headers

その後、変更を適用するにはApacheを再ロードまたは再起動する必要があります。

sudo service apache2 reload

これがうまくいかない場合は、設定のさまざまな部分がWebルートで提供されている.htaccessなど、Cache-Controlディレクティブをオーバーライドすることもできます。

また、Apacheがサーバー構成に大文字を受け入れるかどうかはわかりません。おそらく大文字Iを使用する必要があります。 Apacheが大文字を認識しない場合、再起動時にエラーが表示されます。

答え2

Cache-Control:no-cache単独では表示されず、アプリケーションによって生成されます。

Apacheで設定されているかどうかにかかわらず、アプリケーションから返されたすべてのエントリはデフォルト値を上書きします。

したがって、@MartinOlikaの回答に加えて、アプリケーションも確認する必要があり、必要に応じてアプリケーションレベルで必要な構成を実行できます。

関連情報