我在一个应用程序中有几个 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 能否按预期优雅地共享同一个缓存?