2010-11-25 25 views
7

Jak wyczyścić pamięć podręczną w gwt?jak wyczyścić pamięć podręczną w gwt?

lub czy jest jakiś sposób, który uniemożliwi przeglądarce zachowanie pamięci podręcznej w gwt?

+0

co robi cache przez przeglądarkę? czy możesz bardziej szczegółowo? –

+0

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

Odpowiedz

16

Po wdrożeniu aplikacji GWT należy unikać serwerów proxy i przeglądarek, aby buforować pliki .nocache.js generowane przez GWT. Jednym z rozwiązań jest implementacja filtru serwletów, który dodaje niezbędne nagłówki HTTP, które kontrolują zachowanie pamięci podręcznej.

Oto taki filtr: http://seewah.blogspot.com/2009/02/gwt-tips-2-nocachejs-getting-cached-in.html

Nagłówki w tym przykładzie są:

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 powinien być ustawiony w momencie składania wniosku.

Expires najlepiej jest ustawić w przeszłości, co zmusza wszystkich do rozważenia zawartości, która jest już nieaktualna.

Pragma jest tagiem, który został zastąpiony przez Cache-Control, ale nie zaszkodzi mieć go.

Cache-Controlno-cache oznacza, że ​​przeglądarka lub serwer proxy musi ponownie zatwierdzić kopię z pamięci podręcznej przed zwolnieniem jej do klienta. no-store oznacza, że ​​nikt nigdy nie trzyma kopii z pamięci podręcznej (co powoduje, że no-cache jest zbędny). must-revalidate mówi, że przeglądarka/serwer proxy musi przestrzegać informacji o świeżości i przedłużać ważność, również zbędnych z no-store.

0

Najlepszym sposobem na to, gdy serwer Apache2 jest w środku, jest konfigurowanie wirtualnego hosta w celu pobierania zawsze plików css nocache. Oto przykład: http://pgt.de/2011/01/27/apache-configuration-for-gwt-applications/comment-page-1/#comment-23996.

umieścić ten plik serwera wirtualnego:

<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> 

Cheers

Powiązane problemy