В нашем приложении для Windows 8 мы используем метод IXMLHTTPRequest2 для потоковой передачи файлов по HTTP, файлы, размер которых может достигать гигабайт. Все это прекрасно работает, за исключением того факта, что внутренне WinRT имеет систему кеширования, которая хранит все, что передается по вызову IXMLHTTPRequest2, во временный интернет-кеш. По мере того, как мы передаем все больше и больше файлов, кэш никогда не очищается, и он просто начинает занимать все больше и больше места на диске, пока диск не заполнится.
Оптимально, мы бы хотели полностью отключить эту функцию кэширования. Другим вариантом, с которым мы могли бы жить, было бы то, что кэшированные файлы будут удалены через некоторое время (хотя мы бы хотели избежать просмотра временного интернет-кэша и удаления файлов вручную).
Мы попытались добавить заголовок «Expires: 0» к ответу сервера, а также отключить кэширование непосредственно внутри IE (мы думали, что это может повлиять на вызов IXMLHTTPRequest2), но безрезультатно.
У кого-нибудь есть мысли по этому поводу?
Я понимаю, что этот вопрос похож на другой опубликованный Вот, однако наша проблема больше связана с пространством, занимаемым кешем, а не «свежестью» файлов.
РЕДАКТИРОВАТЬ:
Мы также нашли это сообщение на форумах MSDN, где, по словам модератора MSFT, «Система также периодически очищает кэш, поэтому вам не придется беспокоиться о нехватке дискового пространства.«, но это не так в нашем сценарии.
В соответствии с эта почта на форумах MSDN это невозможно и является известным ограничением для WinRT.
Иногда единственный ответ — плохие новости. : — [
Как отметил 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-запроса.
Это звучит многообещающе.