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