アプリに複数の Web ビューがあり、キャッシュでいくつかの問題が発生しています。
たとえば、あるタブhttp://someurl/
と別のタブがありますhttp://someurl/#somehash
理論的には、フラグメント識別子の後の URL の変更はページ固有であるため、最初の URL によって生成されたキャッシュは 2 番目の URL でも同じです。
問題は、最初の URL がロードされた後にフラグメント識別子を使用して URL を呼び出すため、依然として非常に長いロード時間がかかることです。そして最悪の部分は、それがランダムに見えることです。
同じページをロードするのに 300 ミリ秒から 2500 ミリ秒かかります。ローカル ストレージと可能な限りすべてを使用して高速化していますが、2 番目のページでは、キャッシュからすべてのリソースを読み込む代わりに、すべてを再度読み込み、この奇妙な速度変動が発生するようです。
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 が同じキャッシュを正常に共有できますか?