我正在我的应用程序中使用webview,它正在加载远程网页,然后通过xhr-pooling使用socket.io
(node.js)。
问题是我无法通过socket.io
禁用接收数据的缓存。
例如,我的节点服务器每隔10秒io.emit
,我的webview会收到它并将其保存在:
/数据/数据/...../ webviewCache
我不希望我的webview能够保存,因为随着时间的推移,这些文件的数量正在上升而且它们无法帮助我的应用程序更快地运行...
我试过了:
browser.getSettings().setCacheMode(2); //(2 is LOAD_NO_CACHE)
browser.getSettings().setAppCacheEnabled(false);
但这些都不起作用。我的webview仍在将文件保存到缓存文件夹中。
此时,我已经设置了每隔60秒清空一次缓存文件夹的计时器,但这不是我想在生产中发布的解决方案......
我在这里遗漏了什么或者在android中有禁用缓存的错误吗?
更新1:经过一整天的调试后,我发现了一些有趣的东西。 Logcat显示了两件有趣的事情: saveCacheFile 和 getCacheFile
然后我再次决定尝试关闭缓存......
browser.getSettings().setCacheMode(android.webkit.WebSettings.LOAD_NO_CACHE);
这实际上导致WebView不再从缓存加载文件,但它仍然保存它们。 Log cat说的是这样的:
saveCacheFile for url .../socket.io/1/xhr-polling/BLNN28E7S4PZJsy2pWaF?t=13537
所以我相信实际的问题是,如何在每次请求时阻止webview从 SAVING 缓存文件。
答案 0 :(得分:1)
如何在网址的查询部分添加随机字符串?这种技巧在某些情况下有效。
答案 1 :(得分:0)
我发现的唯一解决方案是在HTTP响应标头中发送“缓存控件:无存储”。