내 JS 파일에 대해 1주일 동안 Apache에서 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
데비안을 가정하고 헤더 모듈을 활성화해야 합니다:
sudo a2enmod headers
그런 다음 변경 사항을 적용하려면 Apache를 다시 로드하거나 다시 시작해야 합니다.
sudo service apache2 reload
이것이 효과가 없는 경우 웹 루트에서 제공되는 .htaccess와 같이 Cache-Control 지시어를 재정의할 수 있는 구성의 다른 여러 부분도 있습니다.
또한 Apache가 서버 구성에서 대문자를 허용하는지 확실하지 않습니다. 아마도 대문자 I를 사용해야 하며 아파치가 대문자 사용을 인식하지 못하는 경우 다시 시작할 때 오류가 인쇄되어야 합니다.
답변2
Cache-Control:no-cache
단독으로 나타나는 것이 아니고, 어플리케이션에 의해 생성되는 것입니다.
Apache에서 구성 여부에 관계없이 애플리케이션이 반환하는 모든 내용은 기본값을 재정의합니다.
따라서 @MartinOlika 답변 외에도 애플리케이션을 검토해야 하며 원하는 경우 애플리케이션 수준에서 원하는 구성을 수행할 수 있습니다.