So aktivieren Sie das Verfalls-Header-Caching für die Webansicht

8

Ich baue eine App, die aus einem Menü und einem Webview besteht. Wenn der Benutzer Menüelemente auswählt, sollte die Webansicht die entsprechende HTML-Datei laden. So weit so gut.

Jetzt stelle ich fest, dass die Webansicht jedes Mal, wenn ich den Menüeintrag drücke, den HTML-Code anfordert. Ich möchte nur den HTML-Code einmal in einer Sitzung laden, weil die HTML-Dateien nicht während eines Tages geändert werden. Als erstes habe ich den expires-Header auf der Serverseite korrekt gesetzt. Sie können es hier überprüfen:

Ссылка

Dann habe ich es versucht

%Vor%

und

%Vor%

Ergebnisse:

erste Version fragt jedes Mal das html ab (mit einem Proxy überprüft) - & gt; das ist komisch. Es sollte die zwischengespeicherte Version anzeigen, solange sie nicht abgelaufen ist. Was ist das Problem?

zweite Version fordert nie eine neue html-Datei an (das ist ok, weil es dazu gedacht ist)

Hat jemand eine Idee, warum der expires-Header hier nicht korrekt funktioniert?

Der ganze Code:

%Vor%     
stoefln 18.04.2013, 12:48
quelle

2 Antworten

2

Die meisten modernen Browser werden immer eine Anfrage an den Server stellen, sogar für zwischengespeicherten Inhalt, nur um zu überprüfen, ob der Server den Inhalt aktualisiert hat. In diesen Fällen enthält der Browser einen Header "If-Modified-Since" in der Anforderung, sodass der Server schnell eine leere HTTP 304-Antwort zurückgeben kann, wenn sich nichts geändert hat.

Ihre Optionen sind entweder 1) Konfigurieren Sie Ihren Server so, dass Last-Modified-Since ausgewertet wird, und geben Sie 304 entsprechend zurück. Dadurch wird der Browser angewiesen, den zwischengespeicherten Inhalt zu verwenden. 2) Implementieren Sie Ihre Seite laden mit Javascript und erstellen Sie eine benutzerdefinierte Caching-Mechanismus mit Localspeicher, die nicht den Launen der Browser-Anbieter unterliegt. Das ist ein bisschen Arbeit, aber was ich bei mehreren performance-sensitiven Projekten erfolgreich gemacht habe.

    
Robert Levy 28.04.2013 03:09
quelle
0

Benutze WebSettings.LOAD_CACHE_ELSE_NETWORK Ich denke, das ist was du brauchst.

    
Vsevolod 26.04.2013 11:21
quelle

Tags und Links