Cache-Control の HTTP 応答ヘッダーが Apache httpd で機能しない

Cache-Control の HTTP 応答ヘッダーが Apache httpd で機能しない

JS ファイル用に Apache で Cache-Control を 1 週間設定しましたが、ブラウザーで確認すると Cache-Control に no-cache と表示されます。どこに設定が欠けているのでしょうか?

以下は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 の回答に加えて、アプリケーションを確認する必要があります。または、希望する場合は、必要な構成をアプリケーション レベルで実行できます。

関連情報