WP7 — Предотвратить кэширование RestSharp

Я использую RestSharp в своем проекте Windows Phone 7.1.

Моя проблема в том, что RestSharp всегда кэширует данные ответа.

Пример:

В первый раз, когда я отправляю запрос, он возвращает данные правильно. После некоторых операций удаления я снова отправляю этот запрос, но ответ выглядит таким же, как и в первый раз, ничего не изменилось.

Если я прекращу отладку и нажму F5, чтобы начать снова, все будет работать как положено.

Я также пробовал request.AddParameter("cache-control", "no-cache", ParameterType.HttpHeader); и не повезло.

Как я могу решить эту проблему?


person Mia    schedule 19.04.2012    source источник
comment
RestSharp не имеет встроенного кэширования, поэтому, вероятно, это находится на слое HttpWebRequest, на котором он построен. У вас есть контроль над конечной точкой API? Можете ли вы опубликовать больше вашего кода?   -  person John Sheehan    schedule 19.04.2012
comment
это хак, но попробуйте что-нибудь вроде url = originalUrl + "&nocache=" + DateTime.Now.Ticks   -  person Rico Suter    schedule 19.04.2012
comment
Я использовал аналогичное решение, которое упоминает @RicoSuter, для решения идентичной проблемы.   -  person earthling    schedule 20.04.2012


Ответы (4)


У меня та же проблема, поэтому просто добавьте заголовок, в котором указано, что клиент данных ответа не кэширует, это мой RestClient с базовым URL-адресом, а затем добавьте заголовок Cache-Control по умолчанию со значением no-cache.

client.AddDefaultHeader("Cache-Control", "no-cache")
person Aseem Aggawral    schedule 13.05.2015

Я нашел решение в комментарии Рико Сутера, спасибо! Я отмечу это как принятый ответ

это хак, но попробуйте что-то вроде url = originalUrl + "&nocache=" + DateTime.Now.Ticks

person Mia    schedule 20.04.2012
comment
Как говорит Рико, это хак... но рабочий! Тем не менее, мне любопытно, пытались ли вы использовать Cache-Control и добавить заголовок Pragma! - person Pedro Lamas; 20.04.2012
comment
Можем ли мы подчеркнуть, что это не имеет ничего общего с RestSharp? - person Ritch Melton; 20.04.2012
comment
Да, проблема заключается в реализации HttpWebRequest, которая использует кеш, который нельзя отключить... - person Rico Suter; 20.04.2012
comment
Я почти уверен, что это не имеет ничего общего с клиентом, а все, что связано с сервером. - person Ritch Melton; 20.04.2012
comment
Конечно, если вы можете изменить сервер, вы можете отключить кеш (см. ответ от педро) - person Rico Suter; 23.04.2012

Заголовок «Cache-Control» должен помочь!

Я думаю, что заголовки HTTP нечувствительны к регистру, но сервер может не согласиться со мной! Вы должны попробовать использовать Cache-Control вместо cache-control...

Кроме того, я бы также добавил в запрос заголовок Pragma со значением no-cache (некоторые старые серверы не используют заголовок «Cache-Control», но они обязательно распознают этот)!

И я бы попытался использовать Fiddler для отладки сообщений и проверки того, что заголовки действительно отправляются на сервер, как и ожидалось!

person Pedro Lamas    schedule 19.04.2012

Другим решением может быть установка заголовка «If-Modified-Since» со значением DateTime.Now:

client.AddDefaultParameter("If-Modified-Since", DateTime.Now, ParameterType.HttpHeader);
person EvZ    schedule 01.06.2015