Я не совсем понимаю, как политики кэширования на основе времени работают при использовании HttpWebRequest
.
Я вызываю метод GET WebAPI, который возвращает содержимое JSON вместе с заголовком Cache-Control, аналогично:
Cache-Control: public, max-age=60
Предполагается, что содержимое будет считаться устаревшим через max-age
секунд.
Я вызываю этот API с использованием HttpWebRequest
и хочу, чтобы последующие запросы обслуживались из локального кэша в течение max-age
секунд, а затем извлекались с сервера по истечении срока действия контента.
Я пробовал разные комбинации с результатами, перечисленными ниже.
Не указывайте RequestCachePolicy
. В этом случае, как и ожидалось, все запросы отправляются на сервер.
Укажите политику кэширования по умолчанию :
var policy = new RequestCachePolicy(RequestCacheLevel.Default);
HttpWebRequest.DefaultCachePolicy = policy;
В этом случае все запросы по-прежнему отправляются на сервер. Я ожидал, что запросы будут отправляться из кэша в течение следующих max-age
секунд.
Укажите политику кэширования CacheIfAvailable
:
var policy = new RequestCachePolicy(RequestCacheLevel.CacheIfAvailable);
HttpWebRequest.DefaultCachePolicy = policy;
В этом случае все запросы обслуживаются из локального кэша, даже если содержимое устарело (т.е. прошло максимальное количество секунд).
Можно ли добиться того, чего я хочу, и если да, то как?