Я использую экземпляр WebClient в своем приложении Silverlight для получения файла изображения для отображения.Для обслуживания этого приложения я настроил службу WCF REST.Ниже приведен фрагмент кода, который я написал для этой службы:
DateTime modSince = WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.IfModifiedSince]
== null
? DateTime.MinValue
: DateTime.Parse(WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.IfModifiedSince].ToString());
FileInfo fInfo = new FileInfo(filePath);
if (fInfo.LastWriteTime > modSince)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg";
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;
WebOperationContext.Current.OutgoingResponse.LastModified = fInfo.LastWriteTime;
}
else
{
WebOperationContext.Current.OutgoingResponse.SuppressEntityBody = true;
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotModified;
}
Служба настроена так, что при запросе файла изображения проверяется атрибут if-updated-Since заголовка запроса.,Если это значение меньше, чем при последнем изменении файла, файл возвращается.В противном случае возвращается сообщение 304.
Мы заинтересованы в том, чтобы сделать транзакцию быстрее.Поскольку изображения редко изменяются, если вообще когда-либо изменяются, желательно выполнить поиск в кэше копии изображения, прежде чем отправлять запрос на сервер, что сэкономит сетевую задержку.Пытаясь реализовать это для IE, я изменил настройки временных файлов Интернета на «никогда не проверять новые версии сохраненных страниц».Когда я ввожу в адресную строку браузера URL-адрес службы REST для изображения, копия которого хранится в кеше, копия извлекается из кеша без вызова сервера.Тем не менее, когда URL-адрес вводится в качестве параметра для метода OpenReadAsync WebClient, на сервер отправляется запрос GET, что приводит к сообщению 304.
Можно ли использовать WebClient для поиска в кэше?без запроса GET на сервер?