Дисковый кэш обратного прокси-сервера IIS ARR

Я хочу настроить дисковый кеш для ответов обратного прокси-сервера на переадресованные запросы. Я ожидаю, что все запросы к http://localhost:88/ будут перенаправлены на https://stackoverflow.com/ (в качестве примера) со следующим правилом перезаписи:

<rule name="ReverseProxy1" stopProcessing="true">
  <match url="(.*)" />
  <action type="Rewrite" url="https://stackoverflow.com/{R:1}" />
</rule>

Который прекрасно работает.

И я хочу, чтобы все ответы с https://stackoverflow.com/ кэшировались на диске. У меня есть следующая настройка в applicationHost.config:

<diskCache scavengerInterval="00:05:00">
  <driveLocation path="C:\inetpub\temp\cache" maxUsage="0" />
  <compression enabled="true">
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
  </compression>
  <sharedDriveLocation path="" />
</diskCache>
<proxy enabled="true" httpVersion="PassThrough" reverseRewriteHostInResponseHeaders="true">
  <cache requestConsolidationEnabled="true" queryStringHandling="Accept" validationInterval="00:01:00" />
</proxy>
<rewrite>
  <globalRules>
    <rule name="ARR_CacheControl_b17f5877-33f6-4bed-be49-f3c07a38cfef" enabled="true" patternSyntax="Wildcard">
      <match url="*" />
      <serverVariables>
        <set name="ARR_CACHE_CONTROL_OVERRIDE" value="1,max-age=1800" />
      </serverVariables>
      <conditions>
        <add input="{HTTP_HOST}" pattern="stackoverflow.com" />
      </conditions>
    </rule>
  </globalRules>
</rewrite>

К сожалению, дисковый кеш никогда не поражается. Я могу сказать это, изучив журнал IIS с записями X-ARR-CACHE-HIT=0. И папка кеша всегда пуста. Папка была создана с помощью пользовательского интерфейса диспетчера IIS, и я предоставил права доступа к идентификатору пула приложений для этой папки, поэтому я предполагаю, что проблема не в правах доступа к папке кеша.

Я что-то пропустил? Поиск решения в Интернете не дал мне никаких результатов, поэтому любой вклад очень ценится.


person Andrii Litvinov    schedule 25.12.2015    source источник


Ответы (1)


Я обнаружил, что проблема заключалась в том, что заголовок ответа Vary присутствует в ответе SO. И на основании ответа на Форумы IIS ARR не поддерживает кэширование при наличии в ответе заголовка Vary.

person Andrii Litvinov    schedule 25.12.2015