我有一个具有以下配置的Web View :
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页面加载到其中,这反过来又加载了一些 Assets :一些静态图像,几个js文件,一个CSS和一个字体。
这些 Assets 与缓存控制 header 一起返回:
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
我重新加载了url,然后在 fiddler 中看到所有 Assets 都在本地缓存,没有任何内容被重新加载。
但,如果我关闭该应用程序并再次打开它-一切都将再次下载。
如何确保 Assets (js\css\images)缓存在设备上,而不是每次都从服务器上检索不到?
最佳答案
原来,此代码效果很好。
问题是我在另一个Webview上调用了clearCache
,结果是:
一旦我从另一个Web View 中删除了对clearCache
的调用,一切就运转良好。