1

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

理想情况下,我们希望完全禁用此缓存功能。我们可以接受的另一个选项是缓存文件将在片刻后被删除(尽管我们希望避免浏览临时 Internet 缓存并手动删除文件)。

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

有人对此有任何想法吗?

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

编辑:我们还在 MSDN 论坛上找到了这篇文章,根据 MSFT 版主的说法,“系统还会定期清理缓存,因此您不必担心磁盘空间不足”,但事实并非如此在我们的场景中。

4

2 回答 2

2

根据MSDN 论坛上的这篇文章,这是不可能的,并且是 WinRT 的一个已知限制。

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

于 2012-12-12T21:42:12.870 回答
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 请求的缓存读取和写入。

这听起来很有希望。

于 2013-10-29T23:48:46.500 回答