Eu configurei o Cache-Control no Apache por 1 semana para meus arquivos JS, mas quando faço check-in no navegador, o Cache-Control mostra sem cache. Onde estou faltando a configuração?
Abaixo está minha configuração no apache
<ifModule mod_headers.c>
<filesMatch "\.(html|htm|png|js|css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
</ifModule>
Solicitar cabeçalho no navegador
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
Responder1
Você precisa habilitar o módulo headers, assumindo o debian:
sudo a2enmod headers
então, para que as alterações tenham efeito, você deve recarregar ou reiniciar o apache:
sudo service apache2 reload
Se isso não surtir efeito, há também várias outras partes da sua configuração que podem substituir a diretiva Cache-Control, por exemplo, em um .htaccess servido pela raiz da sua web.
Além disso, não tenho certeza se o Apache permite qualquer uso de letras maiúsculas na configuração do seu servidor. Possivelmente você deve usar (observe o I maiúsculo) e se o apache não reconhecer sua capitalização, deverá imprimir erros ao ser reiniciado.
Responder2
Cache-Control:no-cache
não aparece sozinho, está sendo produzido pelo aplicativo.
Quer algo esteja configurado no Apache ou não, tudo o que o aplicativo retornar substituirá os padrões.
Então além da resposta do @MartinOlika, a aplicação terá que ser revisada, ou se desejar, a configuração desejada pode ser feita no nível da aplicação.