2017-03-09 5 views
1

Der Browser speichert es nicht zwischen. Es wird die Response-Header:Apache (nicht der Browser) speichert meine Datei

Accept-Ranges:bytes 
Cache-Control:max-age=0, no-cache, no-store, must-revalidate 
Connection:Keep-Alive 
Content-Length:425169 
Content-Type:application/javascript 
Date:Thu, 09 Mar 2017 20:06:53 GMT 
Expires:Wed, 11 Jan 1984 05:00:00 GMT 
Keep-Alive:timeout=5, max=100 
Last-Modified:Thu, 09 Mar 2017 20:06:49 GMT 
Pragma:no-cache 
Server:Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.4.16 

Meine Einstellungen in Apache:

<VirtualHost *:80> 
    <Directory "/webapps/apps/devsite"> 
     Allow from all 
     AllowOverride All 
     Order allow,deny 
    </Directory> 
    DocumentRoot /webapps/apps/devsite 
    ServerName testing.devsite.com 
    SSLEngine off 
</VirtualHost> 

Meine .htaccess:

<FilesMatch "\.(html|htm|js|css)$"> 
FileETag None 
<IfModule mod_headers.c> 
    Header unset ETag 
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
    Header set Pragma "no-cache" 
    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
</IfModule> 
</FilesMatch> 

Die folgenden Lasten eine neue, nicht-Cache-Version:

  1. auf dem Server laufen: rm -f /webapps/apps/devsite/scripts/script.js
  2. Reload im Web-Browser an den Server zurück auf die Datei
  3. Kopie (also eine 404 bekommen)
  4. Reload in Browser

Die folgende tut Lasten eine alte, im Cache gespeicherte Version !:

  1. Am se rver Lauf: rm -f /webapps/apps/devsite/scripts/script.js
  2. Kopieren Sie die Datei wieder auf dem Server (ANMERKUNG: Ich habe nachladen noch nicht in Browser)
  3. Reload in Browser

Dies zeigt, dass Apache irgendwie ist das Caching, bis er bekommt eine neue Anfrage und kann sie nicht finden. Warum? Wie behebe ich das?

Antwort

0

Apache überwacht nicht permanent alle Dateien, nur wenn Sie eine bestimmte Ressource anfordern.

Wenn Sie den 404-Fehler treffen, verliert Apache die Informationen über die Datei, die es zuvor gefunden hatte. Der last modified Zeitstempel ändert sich nicht, wenn Sie in der Zwischenzeit keine Ressource anfordern.

+0

So wie ich es zu zwingen, das zu ändern? –

+0

Können Sie bitte 100% sicher gehen, dass der Browser die Datei nicht zwischenspeichert (Sie können das Zwischenspeichern in Chrome in der Entwicklerkonsole deaktivieren), weil Ihr Apache-Header in Ordnung ist. – DanFromGermany

+0

Das Problem war "EnableSendfile" war an und es war ein freigegebener Ordner in einer virtuellen Maschine: http://unix.stackexchange.com/questions/350362/apache-not-browser-is-caching-my-file/350373? noredirect = 1 # comment620187_350373 –

Verwandte Themen