Назад | Перейти на главную страницу

Кэширование вывода IIS с расширением ISAPI

У меня есть приложение, работающее в IIS через расширение ISAPI с выходными файлами JSON на основе входного URL-адреса (оно работает с интерфейсом RESTful - URL-адреса имеют форму http://domain/path/to/resource.json).

Приложение работает хорошо, но я не могу заставить IIS Output Caching работать для файлов, которые я генерирую.

В моем web.config у меня есть:

<system.webServer>
    ...
    <caching>
        <profiles>
            <add extension=".json" policy="CacheForTimePeriod" kernelCachePolicy="DontCache" duration="00:00:30" />
        </profiles>
    </caching>
</system.webServer>

Я также пробовал использовать * но это тоже не работает.

Есть идеи, почему это не сработает? Спасибо!

По умолчанию кэширование отключено в фильтрах ISAPI, и я не верю, что его можно включить через графический интерфейс. Установите фильтр ISAPI и включите функцию кэширования, изменив <isapiFilters> раздел web.config или используя appcmd.exe.

appcmd.exe Пример:

appcmd.exe set config -section:system.webServer/isapiFilters /+"[name='YourJsonIsapi',path='c:\yourpath\YourJsonIsapi.dll',enabled='True',enableCache='True']" /commit:apphost

web.config Пример:

<configuration>
   <system.webServer>
      <isapiFilters>
         <filter 
            name="YourJsonIsapi" 
            enabled="true" 
            enableCache="true" 
            path="C:\yourpath\YourJsonIsapi.dll" />
      </isapiFilters>
   </system.webServer>
</configuration>