2

我在一个应用程序中有几个 webviews,我们遇到了一些缓存问题。

例如,我们有一个选项卡http://someurl/和另一个选项卡http://someurl/#somehash

理论上,第一个 url 生成的缓存在第二个 url 上是相同的,因为片段标识符之后的 url 变化只是页面特定的。

问题是,当我们在第一个 url 加载后调用带有片段标识符的 url,我们仍然会得到非常长的加载时间。最糟糕的是,它似乎是随机的。

加载同一页面需要 300 毫秒到 2500 毫秒。我们使用本地存储和一切可能的方式来加快速度,但似乎第二页不是从缓存中加载所有资源,而是再次加载所有内容,并以这种奇怪的速度变化。

以下是我们设置 webview 缓存的方法:

webSettings.setAppCachePath(getContext().getApplicationContext().getCacheDir().getAbsolutePath());
webSettings.setAllowFileAccess(true);
webSettings.setAppCacheEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheMaxSize(1024 * 1024 * 10);
webSettings.setDatabaseEnabled(true);
webSettings.setDatabasePath(getContext().getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath());

所以我的问题是

WebView 的片段标识符缓存是否存在已知限制?

在这种情况下我做错了吗?

多个 WebView 能否按预期优雅地共享同一个缓存?

4

0 回答 0