如何在使用IXMLHTTPRequest2进行流式传输时禁用Windows 8上的缓存?

时间:2012-12-12 21:23:48

标签: c++ c++11 windows-runtime msxml

在我们的Windows 8应用程序中,我们使用IXMLHTTPRequest2方法通过HTTP传输文件,文件的大小可以达到千兆字节。这一切都很完美,除了内部的事实,WinRT有一个缓存系统,它存储通过临时Internet缓存中的IXMLHTTPRequest2调用流传输的所有内容。当我们传输越来越多的文件时,缓存永远不会被清空,它只是开始在磁盘上占用越来越多的空间,直到磁盘已满。

最理想的是,我们希望完全禁用此缓存功能。我们可以使用的另一个选择是缓存文件会在一段时间后被删除(尽管我们希望避免浏览临时Internet缓存并手动删除文件)。

我们尝试将“Expires:0”标头添加到服务器响应中,并在IE中直接禁用缓存(我们认为这可能会影响对IXMLHTTPRequest2的调用),但无济于事。< / p>

有人对此有任何想法吗?

我意识到这个问题类似于另一个问题here,但是,我们的问题更多地与缓存占用的空间而不是文件的“新鲜度”有关。

修改: 我们还在MSDN论坛上找到了这个post,根据MSFT主持人的说法,“系统还会定期清理缓存,因此您不必担心磁盘空间不足< / em>“,但在我们的场景中情况并非如此。

2 个答案:

答案 0 :(得分:2)

根据MSDN论坛上的this post,这是不可能的,并且是WinRT的已知限制。

有时唯一的答案是坏消息。 : - [

答案 1 :(得分:1)

正如ildjarn所说,这在Windows 8上似乎是不可避免的。但看起来可能有办法解决运行Windows 8.1的客户端。

我自己没有尝试过,但我注意到现在有了“IXMLHTTPRequest3”,它扩展了“IXMLHTTPRequest2”并增加了一些新功能: http://msdn.microsoft.com/en-us/library/windows/desktop/dn376398%28v=vs.85%29.aspx

相关功能是: XHR_PROP_NO_CACHE - 禁止对HTTP请求进行高速缓存读写。

听起来很有希望。