2016-01-03 3 views
1

Вот мой сценарий. Я использую WebView, чтобы показать мой мобильный сайт в приложении. Мы регулярно обновляем наш сайт и автоматически очищаем кеш веб-сайта, поэтому посетители получают последнюю версию нашего сайта вместо устаревших версий. Я заметил, что иногда WebView обслуживает старый контент - он иногда не загружает более новые версии нашего сайта. Следовательно, я ищу способ заставить WebView показать новый контент.Как очистить кеш Android WebView?

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

Единственный способ, которым я могу думать делать это вручную очистить кэш, что-то вроде этого:

@Override 
public void onPageFinished(WebView view, String url) { 
    super.onPageFinished(view, url); 
    view.clearCache(true); 
} 

Но, опять-таки, это неэффективно - нет необходимости очистить весь кэш после каждый просмотр страницы. Мой вопрос в том, есть ли способ очистить только кэшированные HTML-файлы и оставить CSS/JS/и т. Д.? Это был бы хороший компромисс между всегда очисткой кеша и некогда служением устаревшим контентом. Удаляя только кэшированные HTML-файлы после каждого просмотра страницы, WebView вынужден захватывать последние HTML-страницы с моего сервера, не перезагружая CSS или JS.

Еще лучше, чтобы избавить от ненужной вычислительной мощности, есть ли способ удалить из кеша только конкретную страницу, на которой пользователь включен? Например. После загрузки google.com кэшированная HTML-страница для google.com (но не CSS, JS и т. Д.) Удаляется, поэтому при следующем загрузке google.com загружается последняя версия.

Спасибо!

+0

Я здесь, чтобы узнать, нашли ли вы ответ на эту проблему. Потому что даже изменение ресурса url не помогло мне ... спасибо – Dazag

ответ

1

Добавить параметр в свой JS/ссылки на файл CSS в HTML код, который может быть DateTime или строка версии, так же, как:

<link rel='stylesheet' href='style/jquery.mobile-1.3.2.min.css?ver=1.3.2'> 
<script src="js/jquery-1.8.3.min.js?ver=1.8.3"></script> 
<script src="js/jquery.mobile-1.3.2.min.js?ver=1.3.2"></script> 
<script src="js/my_script.js?ver=201603111428"></script> 

Когда ваш скрипт или таблица стилей файл updtated, просто изменится новое значение параметра, тогда веб-просмотр будет рассматривать его как новый URL-адрес и сделать перезагрузку.

3
mWebView.getSettings().setAppCacheEnabled(false); 
mWebView.clearCache(true); 
mWebView.loadUrl("about:blank"); 
mWebView.reload(); 
mWebView.loadUrl("http:xxxxxxx"); 

Я тоже искал решения, но единственными работами для меня были эти команды.

+0

Dang hat действительно работает! Так расстроено это хаха –

Смежные вопросы