2015-08-05 12 views
5

In meiner Hybrid-App ich Web-Ressource zum Beispiel main.css?{timestamp-file-was-modified} nennen und ihnen ein Jahr lang Max-Age-Cache-Header, so dass die Clients sollten es mehr oder weniger für immer behalten.UIWebView Ignorieren Disk-Cache?

Was in meinem iOS-App zu passieren scheint, ist jedoch, dass die UIWebView ehrt den Cache-Header während der gesamten Lebensdauer der App, das heißt, wenn ich eine neue Seite laden, die enthält auch main.css?{same-timestamp} es nicht einmal, wie es revalidate werden versuchen, weiß Es hat die richtige Datei im Cache. ABER, bei einem Neustart der App (nachdem sie getötet wurde oder das Gerät ausgeschaltet wurde), ruft die UIWebView alle Ressourcen erneut ab und ignoriert den Cache. Ich habe es durch Charles Proxy durchgeführt, um zu überprüfen, ob dies der Fall ist.

Ich habe in der SQlite cache.db nachgesehen und ich sehe, dass ist da, aber immer noch die UIWebView wird nicht aus dem Cache geladen, wodurch die erste Seite laden deutlich langsamer als es sein könnte.

Ich habe es auf einem iPhone mit iOS 8.4 und einem iPad mit iOS 8.2 versucht. Gleiches Ergebnis.

Irgendwelche Ideen?

Antwort

0

Wenn Sie den Cache wirklich steuern möchten, können Sie Ihre benutzerdefinierte NSURLProtocol-Unterklasse in delegate registrieren und dann mit - (void)startLoading alles aus dem lokalen Speicher laden.