2012-11-23 61 views
2

我在我的應用程序中使用webview加載遠程網頁,然後通過xhr-pooling使用socket.io(node.js)。Android Webview - 無法禁用緩存

問題是我無法通過socket.io禁用緩存接收的數據。 例如,每10秒我的節點服務器執行io.emit,而我的WebView接收它,並將其保存在:

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

我不希望我的WebView什麼保存,因爲隨着時間的推移,這些文件的數量剛剛升起,他們都沒有幫助我的應用程序運行速度更快...

我已經試過:

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

但這些作品都沒有。我的webview仍然將文件保存到緩存文件夾。

在這一刻,我已經設置了定時被排空每60秒的緩存文件夾,但是這不是解決方案,我想在生產中釋放......

我缺少的東西在這裏或那裏的臭蟲以在android中禁用緩存?

UPDATE 1:經過整天的調試,我發現了一些有趣的東西。 logcat中顯示了兩個有趣的事情:saveCacheFilegetCacheFile

於是我決定再次嘗試關閉緩存...

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

這實際上造成的WebView中並沒有加載文件從緩存了,但它仍然保存它們。登錄貓說,這樣的事情:

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

所以我相信實際的問題是,如何防止網頁視圖從節省每一個請求緩存文件。

回答

1

如何在URL的查詢部分添加隨機字符串?這個技巧在某些情況下有效。

+2

這不是從緩存中檢索數據的問題,問題在於Android一直在保存文件和不必要的使用空間。 – Igor