Я нахожусь в процессе применения кеширования для нашего корпоративного API. Я пытаюсь добиться Cache-Control типа " public , max-age = 600" для совместимости с нашим балансировщиком нагрузки, который поддерживает обратное прокси-кэширование.
Однако я могу получить только WCF для вывода " private , max-age = 600", что не подходит для кэширования обратного прокси.
У меня есть следующий профиль в качестве местоположения: Сервер (так как мне требуется кэширование на уровне приложений ASP), но я также пробовал все остальные местоположения, но ни одно из них не даст мне Публичный.
<caching>
<outputCache enableOutputCache="true"/>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheDefault" duration="600" varyByParam="none" location="Any" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Я использую стандартный WCF, ничего особенного:
[AspNetCacheProfile("CacheDefault")]
[OperationContract]
[WebGet(UriTemplate = "/GetData/{value}")]
string GetData(string value);
Я даже запустил новый сервисный проект WCF просто для того, чтобы удалить все смешанные переменные, которые могут быть в моем текущем производственном коде, но он все еще выводит private.
P.S. Я, вероятно, должен прояснить, что я не собираюсь переопределять заголовки WebOperationContext.current.outgoingresponse.headers. Я после быстрой победы с настройкой AspNetCacheProfile.
Любая помощь будет отличной!
Большое спасибо!
Оливер