应用关闭后Android WebView缓存丢失

时间:2014-01-01 18:54:58

标签: android caching webview browser-cache cache-control

我有一个包含以下配置的Web视图:

getSettings().setJavaScriptEnabled(true);
getSettings().setSupportMultipleWindows(false);
getSettings().setNeedInitialFocus(false);
getSettings().setSupportZoom(false);
getSettings().setAllowFileAccess(true);
getSettings().setAppCacheEnabled(true);
getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
String cachePath = getContext().getCacheDir().getAbsolutePath();
getSettings().setAppCachePath(cachePath);

我将一个html页面加载到其中,然后加载一些资源:一些静态图像,几个js文件,一个CSS和一个字体。

使用缓存控制标头返回这些资产:

HTTP/1.1 200 OK 
Date: Wed, 01 Jan 2014 18:40:36 GMT
Last-Modified: Mon, 30 Dec 2013 09:23:55 GMT
Cache-Control: public, max-age=604800

我重新加载了网址,我可以在fiddler中看到所有资产都在本地缓存,没有重新加载

但是,如果我关闭应用并再次打开它 - 一切都会再次下载。

如何确保资产(js \ css \ images)缓存在设备上,而不是每次都从我的服务器检索?

1 个答案:

答案 0 :(得分:4)

结果此代码效果正常

问题是我在另一个网页浏览中呼叫clearCache,结果证明:

  

缓存是每个应用程序,因此这将清除所有使用的WebView的缓存。

一旦我从其他网页浏览中移除了对clearCache的调用,一切都运行良好。