Apache httpd에서 작동하지 않는 Cache-Control의 HTTP 응답 헤더

Apache httpd에서 작동하지 않는 Cache-Control의 HTTP 응답 헤더

내 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 답변 외에도 애플리케이션을 검토해야 하며 원하는 경우 애플리케이션 수준에서 원하는 구성을 수행할 수 있습니다.

관련 정보