Buduję aplikację, która składa się z menu i widoku internetowego. Gdy użytkownik wybiera pozycje menu, widok internetowy powinien załadować respektujący plik HTML. Jak na razie dobrze.Jak włączyć buforowanie nagłówka wygasającego dla widoku WWW
Teraz widzę, że przeglądarka żąda html za każdym razem, gdy naciskam pozycję menu. Chciałbym załadować html tylko raz w sesji, ponieważ pliki HTML nie będą się zmieniać w ciągu dnia. Pierwszą rzeczą, którą zrobiłem, było prawidłowe ustawienie nagłówka wygasania po stronie serwera. Można to sprawdzić tutaj:
http://redbot.org/?uri=http%3A%2F%2Fcutoutcam.com%2Ftest1.php
Potem próbowałem
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
i
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
wyniki:
pierwsza wersja kupna html za każdym razem (sprawdzone z proxy) -> to dziwne. powinna pokazywać wersję z pamięci podręcznej, o ile nie wygasła. jaki jest problem?
druga wersja nie wnosi nowy plik HTML (to jest ok, bo to ma do tego)
Ktoś ma pomysł dlaczego wygasa nagłówka nie działa tu poprawnie?
Cały kod:
mWebView = (WebView) getView().findViewById(R.id.fragment_web_view_wv);
mWebView.setWebViewClient(new WebViewClient(this));
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
android.webkit.WebStorage.QuotaUpdater quotaUpdater)
{
quotaUpdater.updateQuota(spaceNeeded * 2);
}
});
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
String appCachePath = getActivity().getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
mWebView.loadUrl(args.getString("url"));
Nie, nie jest: WebSettings.LOAD_CACHE_ELSE_NETWORK: "Użyj zasobów z pamięci podręcznej, gdy są dostępne, nawet jeśli wygasły." Chcę używać tych zasobów tylko wtedy, gdy ich ważność nie została wygaszona – stoefln
której wersji Api używasz? – Vsevolod
Buildtarget to poziom interfejsu API 17, minSdk to 8 – stoefln