веб-просмотр не кешируется - PullRequest
0 голосов
/ 07 февраля 2019

Я пытался включить кэширование в Android WebView, но каждая конфигурация, которую я видел на SO, заканчивается сбоем.

Вот что у меня есть:

У меня есть веб-страница с Iframeвнутри, который загружает 10-12 страниц в цикле, все содержимое этих страниц имеет заголовок Cache-Control: max-age=86400.

Если я загружаю эти страницы нормально в браузере, они работают и страницы кэшируются.

Итак, вот конфигурация, которая у меня есть

        getSettings().setJavaScriptEnabled(true);
        getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        getSettings().setDomStorageEnabled(true);
        getSettings().setMediaPlaybackRequiresUserGesture(false);
        getSettings().setAppCacheEnabled(true);
        getSettings().setAppCachePath(context.getCacheDir().getAbsolutePath());
        getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

Эти настройки работают для воспроизведения мультимедиа и включения js

EDIT

Я построил новыйприложение и попытался загрузить Google с помощью метода loadUrl и перезагрузил его с помощью кнопки, когда сеть была отключена, он смог перезагрузить страницу без интернета, это означает, что она кэшировала эту страницу.

Так что проблема в том, чтоwebview - это не кэширование страниц, которые загружаются страницей.

Если кто-нибудь знает, как мы можем кэшировать контент, который загружается при загрузке страниц webview, это было бы очень полезно.

-Спасибо

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Итак, после серии подробных тестов на нашем устройстве iframe и Android я понял, что WebView не кэширует файлы, размер которых превышает определенный размер.

Одна из моих страниц, которые загружалисьу iframe было видео размером 30 Мб, которое не кэшировалось и приводило к огромному потреблению данных.(так как он рендерился каждые 2 минуты)

Я уменьшил его до 10 МБ, и он все еще не кэшировал его, наконец, я уменьшил его до 980 КБ, и он начал кэшировать.

Я не уверен насчетограничение кэширования для каждого файла для WebView, но я столкнулся с интересной ошибкой здесь , которая гласит, что после Android 4.3 общий лимит кэша был жестко задан в 20 МБ, который мы можем найти в этом файле в строке 98.

Если кто-то знает, где эти ограничения задокументированы, сообщите об этом сообществу, ответив здесь.

0 голосов
/ 07 февраля 2019

Этот код решает мою проблему, надеюсь, вам тоже поможет:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

РЕДАКТИРОВАТЬ: Также вам не нужны эти строки:

getSettings().setAppCacheEnabled(true);

 getSettings().setAppCachePath(context.getCacheDir().getAbsolutePath());

Удалите их и проверьте еще раз.AppCache настройка не связана с типом кэша, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...