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