4

リモートWebページをロードしているアプリでwebviewを使用しており、socket.ioxhr-poolingを介して(node.js)を使用しています。

問題は、を介して受信したデータのキャッシュを無効にできないことsocket.ioです。たとえば、ノードサーバーが10秒ごとに実行しio.emit、Webビューがそれを受信して​​次の場所に保存します。

/ data / data /...../ webviewCache

時間の経過とともにこれらのファイルの数が増えているだけで、アプリの実行速度が向上していないため、Webビューに何も保存したくありません...

私はもう試した:

browser.getSettings().setCacheMode(2);   //(2 is LOAD_NO_CACHE)
browser.getSettings().setAppCacheEnabled(false);

しかし、どちらも機能しません。私のウェブビューはまだファイルをキャッシュフォルダに保存しています。

現時点では、60秒ごとにキャッシュフォルダを空にするタイマーを設定しましたが、それは本番環境でリリースしたい解決策ではありません...

ここで何かが足りないのですか、それともAndroid内のキャッシュを無効にするバグがありますか?

更新1:デバッグの丸一日の後、私は何か面白いものを見つけました。Logcatは、 saveCacheFilegetCacheFileという2つの興味深いものを示しています。

それから私はもう一度キャッシュをオフにしてみることにしました...

browser.getSettings().setCacheMode(android.webkit.WebSettings.LOAD_NO_CACHE);

これにより、WebViewはキャッシュからファイルをロードしなくなりましたが、それでもファイルは保存されていました。ログ猫はこのようなことを言います:

saveCacheFile for url .../socket.io/1/xhr-polling/BLNN28E7S4PZJsy2pWaF?t=13537

したがって、実際の質問は、Webviewがすべてのリクエストでキャッシュファイルを保存しないようにする方法だと思います。

4

2 に答える 2

1

URL のクエリ部分にランダムな文字列を追加するのはどうですか? このトリックは、場合によっては機能します。

于 2013-06-20T12:59:43.880 に答える