Как добиться «Cache-Control: public, max-age = 600», используя AspNetCacheProfile в WCF - PullRequest
1 голос
/ 14 декабря 2011

Я нахожусь в процессе применения кеширования для нашего корпоративного 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.

Любая помощь будет отличной!

Большое спасибо!

Оливер

1 Ответ

0 голосов
/ 14 декабря 2011

Я сталкивался с разными методами кеширования.Я разместил некоторые из тех, которые я нашел полезными здесь http://itswadesh.wordpress.com/2011/05/05/caching-in-asp-net/

...