Android webview未缓存

Android webview未缓存,android,webview,Android,Webview,我一直在尝试在Android WebView中启用缓存,但我在上面看到的每个配置都以失败告终 以下是我所拥有的: 我有一个网页,里面有一个Iframe,循环加载10-12个页面,这些页面中的所有内容都有缓存控制:max age=86400标题 如果我在浏览器中正常加载这些页面,它们会工作,页面会被缓存 这是我的配置 getSettings().setJavaScriptEnabled(true); getSettings().setJavaScriptCanOpe

我一直在尝试在Android WebView中启用缓存,但我在上面看到的每个配置都以失败告终

以下是我所拥有的:

我有一个网页,里面有一个Iframe,循环加载10-12个页面,这些页面中的所有内容都有
缓存控制: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

编辑

我构建了一个新的应用程序,尝试用
loadUrl
方法加载google,并在网络关闭时用一个按钮重新加载,它能够在没有互联网的情况下重新加载页面,这意味着它缓存了该页面

所以问题是webview没有缓存页面加载的页面

如果有人知道如何缓存webview页面加载加载的内容,那将是一个很大的帮助


-谢谢

此代码解决了我的问题,希望也能帮助您:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
编辑:您也不需要编辑这些行:

getSettings().setAppCacheEnabled(true);

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

拆下它们并再次检查<代码>应用缓存设置与所需的缓存类型无关

因此,在对iframe和Android设备进行了一系列详细测试后,我意识到WebView不会缓存大于特定大小的文件

我的一个被iframe加载的页面有一个30mb的视频,没有被缓存,导致了巨大的数据消耗。(每2分钟渲染一次)

我将它减少到10mb,但它仍然没有缓存。最后,我将它减少到980kb,它开始缓存

我不确定WebView的每个文件的缓存限制,但我遇到了一个有趣的错误,在Android 4.3之后,总缓存限制被硬编码为20mb,我们可以在第98行中找到


如果有人知道这些限制记录在哪里,请在此处回复,让社区知道。

可以。。。还有一件事我正在使用安卓5。。。这对配置有什么影响吗?你能解决这个问题吗?@c_rueschenberg是的,请阅读我的答案。你减少文件大小的答案也是一样吗?如果这不是一个选项,你找到替代方案了吗?@c_rueschenberg如果是这种情况,那么你必须在更改源文件中设置的硬限制后重建chromium并使用该构建。检查我答案中显示硬限制的文件链接。