我有一个包含以下配置的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)缓存在设备上,而不是每次都从我的服务器检索?
答案 0 :(得分:4)
结果此代码效果正常。
问题是我在另一个网页浏览中呼叫clearCache
,结果证明:
缓存是每个应用程序,因此这将清除所有使用的WebView的缓存。
一旦我从其他网页浏览中移除了对clearCache
的调用,一切都运行良好。