HTTP-Antwortheader für Cache-Control funktioniert nicht in Apache httpd

HTTP-Antwortheader für Cache-Control funktioniert nicht in Apache httpd

Ich habe Cache-Control in Apache für eine Woche für meine JS-Dateien eingestellt, aber wenn ich im Browser nachschaue, zeigt Cache-Control keinen Cache an. Wo fehlt mir die Konfiguration?

Unten ist meine Konfiguration in Apache

<ifModule mod_headers.c>

  <filesMatch "\.(html|htm|png|js|css)$">
   Header set Cache-Control "max-age=604800, public"
  </filesMatch>

</ifModule>

Anforderungsheader im Browser

    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

Antwort1

Sie müssen das Header-Modul aktivieren, vorausgesetzt, Debian:

sudo a2enmod headers

Damit die Änderungen wirksam werden, müssen Sie Apache neu laden oder neu starten:

sudo service apache2 reload

Wenn dies keine Wirkung hat, gibt es auch mehrere andere Teile Ihrer Konfiguration, die die Cache-Control-Direktive außer Kraft setzen können, beispielsweise in einer .htaccess, die von Ihrem Web-Stammverzeichnis bereitgestellt wird.

Außerdem bin ich mir nicht sicher, ob Apache in Ihrer Serverkonfiguration Großschreibung zulässt. Möglicherweise müssen Sie (beachten Sie das große I) verwenden, und wenn Apache Ihre Großschreibung nicht erkennt, sollte es beim Neustart Fehlermeldungen ausgeben.

Antwort2

Cache-Control:no-cacheerscheint nicht allein, sondern wird von der Anwendung erzeugt.

Unabhängig davon, ob etwas in Apache konfiguriert ist oder nicht, werden die Standardeinstellungen durch die von der Anwendung zurückgegebenen Werte überschrieben.

Daher muss neben der Antwort von @MartinOlika die Anwendung überprüft werden, oder, falls gewünscht, kann die gewünschte Konfiguration auf Anwendungsebene vorgenommen werden.

verwandte Informationen