2010-11-25 5 views
7

Wie kann ich den Cache in gwt löschen?wie Cache in gwt löschen?

oder gibt es eine Möglichkeit, die Browser zu verhindern, den Cache in gwt zu halten?

+0

was durch den Browser-Cache funktioniert? Kannst du bitte genauer? –

+0

http://en.wikipedia.org/wiki/Web_cache –

Antwort

16

Wenn Sie eine GWT-Anwendung bereitstellen, ist es wichtig, Proxies und Browser zu vermeiden, die von GWT generierten .nocache.js-Dateien zwischenzuspeichern. Eine Lösung besteht darin, einen Servlet-Filter zu implementieren, der die erforderlichen HTTP-Header hinzufügt, die das Caching-Verhalten steuern.

Hier ist ein solcher Filter: http://seewah.blogspot.com/2009/02/gwt-tips-2-nocachejs-getting-cached-in.html

Die Header in diesem Beispiel sind:

Date: Wed, 24 Nov 2010 20:32:43 GMT 
Expires: Wed, 01 Nov 2000 00:00:00 GMT 
Pragma: no-cache 
Cache-Control: no-cache, no-store, must-revalidate 

Date sollte der Zeitpunkt der Anforderung eingestellt werden.

Expires ist am besten irgendwann in der Vergangenheit eingestellt, dies zwingt alle, den Inhalt bereits veraltet zu betrachten.

Pragma ist ein Tag, der durch Cache-Control ersetzt wurde, aber es tut nicht weh, es zu haben.

Cache-Controlno-cache bedeutet, dass ein Browser oder Proxy eine zwischengespeicherte Kopie erneut validieren muss, bevor sie an den Client freigegeben wird. no-store bedeutet, dass niemand eine zwischengespeicherte Kopie speichert (was no-cache überflüssig macht). must-revalidate besagt, dass der Browser/Proxy Frische-Informationen beachten und erneut validieren muss, auch redundant mit no-store.

0

Der beste Weg, es zu tun, wenn Sie einen Apache2-Server in der Mitte haben, ist die Konfiguration Ihres virtuellen Hosts, um immer css nocache-Dateien herunterladen zu können. Hier haben Sie ein Beispiel: http://pgt.de/2011/01/27/apache-configuration-for-gwt-applications/comment-page-1/#comment-23996.

Dieses auf der Virtual Server-Datei:

<IfModule mod_expires.c> 
    ExpiresActive On 
    </IfModule> 

    <IfModule mod_headers.c> 
    <ProxyMatch (.*)nocache\.js$> 
     Header Set Cache-Control "max-age=0, no-store" 
    </ProxyMatch> 
    <ProxyMatch (.*)\.cache\.(.*)> 
     Header Set Cache-Control "max-age=31536000, public, must-revalidate" 
    </ProxyMatch> 
    <ProxyMatch (.*)\.cache\.js$> 
     Header Set Cache-Control "max-age=31536000, private" 
    </ProxyMatch> 
    </IfModule> 

<Proxy *> 
    <IfModule mod_expires.c> 
     ExpiresByType application/json "now" 
     ExpiresByType text/css   "now" 
     ExpiresByType text/html   "now" 
    </IfModule> 
    <ifModule mod_headers.c> 
     Header unset ETag 
     Header unset Last-Modified 
    </ifModule> 
    FileETag None 
    </Proxy> 

Prost