GZip сжатие статических json-файлов на IIS
Имеется приложение на php, развернутое на Win2012/IIS 8.
Время от времени планировщик задач перегенерирует несколько JSON-файлов, расположенных в директории ./cache/ проекта.
Для файлов настроено кэширование сервера, а вот теперь неплохо бы добавить к кэшированию еще и сжатие.
Насколько из различных статетй понятно, то если файл сжат, то в кэше хранится сжатая копия. Но вот что-то не совсем ясно, как это сжатие настроить.
На текущий момент времени json-файлы передаются несжатыми (там же есть и Html файл, он передается сжатым) конфиг следующий:
<caching enabled="true" enableKernelCache="true">
<profiles>
<add extension=".json" policy="DontCache" kernelCachePolicy="CacheUntilChange" />
<add extension=".html" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="00:01:00" />
</profiles>
</caching>
<urlCompression doStaticCompression="true" />
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
</dynamicTypes>
<staticTypes>
<add mimeType="application/json" enabled="true" />
</staticTypes>
</httpCompression>
Ответы (1 шт):
В общем говоря, закончилось все дело выполнением команды
C:\Windows\System32\Inetsrv\Appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/json',enabled='True']" /commit:apphost
которая добавляет компрессию json для статических файлов на уровне сервера, а не сайта. После перезапуска пула приложения вроде стал отдавать сжатые данные (26кбайт -> 4.5, 51 -> 12, 197 -> 33), что в целом весомо для мобильных клиентов с плохой связью.