2012-03-28 5 views
1

Ich wiederhole eine ganze Website und der Browser verwendet die zwischengespeicherten index.html Seiten, die die gleiche URL haben.Wie verhindere ich, dass Browser eine alte zwischengespeicherte index.html verwenden?

Dies ist der gesamte Inhalt der .htaccess Datei in einem der Problemverzeichnisse:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /products/ 

    # Remove 'index.html' from the URL for old links that include it. 
    RewriteCond %{THE_REQUEST} ^.*\index\.html?\ HTTP/ 
    RewriteRule ^(.*)index\.html?$ "/products/$1" [R=301,L] 

    # Use index.php for all requests. 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule^/products/index.php [L] 
</IfModule> 

# An atempt to tell the browser not to use a cached .html file. 
ExpiresActive on 
ExpiresByType text/html "access plus 0 seconds" 

<FilesMatch "\.(html)$"> 
    Header set Cache-Control "private, must-revalidate" 
</FilesMatch> 

ich hier mehrere Dinge ausprobiert habe, aber nichts funktioniert. Das ist alles, was ich in den Headern sehe:

Request URL:http://www.example.com/products/ 
Request Method:GET 
Status Code:200 OK (from cache) 

Es gibt keine Anfrage Header oder Antwort Header.

Ich denke, ich kann vielleicht eine RewriteRule versuchen, etwas wie ?28032012 an das Ende von etwas hinzuzufügen, aber ich weiß nicht, wie man das überhaupt versucht.

+0

Können Sie die index.html Seite selbst nicht bearbeiten? http://stackoverflow.com/questions/748193/html-php-page-bein-cached-client-side-when-it-should-not-be –

+0

Ich kann, aber ich muss die Website live so schnell wie schieben möglich. – JDavis

+0

Es sieht so aus, als ob mod_expires überhaupt nicht funktioniert. Sind Sie sicher, dass Sie das Kommentarzeichen LoadModule expires_module modules/mod_expires.so haben? Vorher sollten Sie die temporäre Datei Ihres Browsers löschen. Ich hoffe das hilft. – huangli

Antwort

0

Die Lösung, die ich für diese am Ende mit war, alle www Anfragen nicht www-Anfragen zu umleiten. Im Grunde genommen verhinderte dieser Ansatz, dass Browser zwischengespeicherte Ressourcen verwenden, da die www-Version der Website nicht mehr existiert.

0

Ich habe gelesen, dass das Anhängen von? Version = <% = Version%> an problematische Dateinamen ist eine gute Methode der Cache-Busting. Sie können auch versuchen, die HTTP-Kopfzeile "cache-control: max-age = 600" zu vereinfachen, so dass alles auf der Seite, die 10 Minuten oder älter ist, vom Server abgerufen wird.

0

Sie können einfach anfügen /? bis zum Ende Ihrer URL. Beispiel:

www.google.com/?