Невозможно получить iis7 для gzip шрифтовых шрифтов
Я на общем веб-хосте, и у меня есть доступ только к файлу web.config для iis7.5. javascript-файлы и css-файлы gzip, так что это работает, но я думаю, что это работает по умолчанию, потому что статическое сжатие включено в iis7.5. тем не менее, я не могу получить файлы шрифтов для gzip, они имеют одинаковый размер при отправке, а заголовки ответа не имеют кодировки содержимого: gzip. Спасибо за любую помощь.
это файл web.config:
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<staticContent>
<mimeMap fileExtension=".otf" mimeType="font/opentype" />
</staticContent>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="font/open-type" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="text/css" enabled="true" />
<add mimeType="text/html" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="font/opentype" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
<urlCompression dynamicCompressionBeforeCache="true" doDynamicCompression="true" doStaticCompression="true" />
<defaultDocument>
<files>
<clear />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" />
<add value="index.php" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
4 ответа
По умолчанию IIS не включает эти типы MIME в модуль httpCompression. Вам нужно изменить файл applicationHost.config в: C: \ Windows \ System32 \ inetsrv \ config.
Этот файл будет влиять на все ваши сайты и должен быть открыт в 64-битном текстовом редакторе в 64-битной Windows. (Notepad2 64-bit, Notepad, не используйте Notepad ++)
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
<!-- HERE -->
<add mimeType="image/svg+xml" enabled="true" />
<add mimeType="application/font-woff" enabled="true" />
<add mimeType="application/x-font-ttf" enabled="true" />
<add mimeType="application/octet-stream" enabled="true" />
<!-- HERE -->
</staticTypes>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
<!-- HERE -->
<add mimeType="image/svg+xml" enabled="true" />
<add mimeType="application/font-woff" enabled="true" />
<add mimeType="application/x-font-ttf" enabled="true" />
<add mimeType="application/octet-stream" enabled="true" />
<!-- HERE -->
</dynamicTypes>
</httpCompression>
Это мои личные настройки для сжатия файлов SVG, WOFF, EOT и TTF.
Затем просто введите iisreset в командной строке, чтобы перезагрузить конфигурацию в IIS, или перезагрузите компьютер.
ОБНОВИТЬ
Файлы Woff и Woff2 уже сжаты, поэтому вам не нужно этого делать. Фактически, клиент потеряет производительность, если вы взломаете его.
Важно отметить, что изменив ваш applicationHost.config (в%windir%\system32\inetsrv\config) из следующего параметра:
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
чтобы:
<section name="httpCompression" overrideModeDefault="Allow" />
включит настройку тега httpCompression под тегом system.webServer в вашем файле web.config.
Проблема в том, что по умолчанию IIS не включает типы MIME для веб-шрифтов в список типов MIME, которые могут быть сжаты. Javascript и CSS файлы включены, поэтому вы видите, как они сжимаются.
Ваши настройки httpCompression, вероятно, не используются, они заблокированы по умолчанию и не могут быть установлены в файле web.config. Взгляните на эту страницу: http://support.microsoft.com/kb/969062. В разделе "Дополнительная информация" говорится: "Вы можете установить типы MIME только для уровня веб-сервера".
Единственный способ заставить это работать на моем локальном сервере - это добавить типы mime в раздел httpCompression applicationHost.config (для этого требуется доступ администратора). Установка их в web.config не повлияла.
Если вы не можете получить доступ к applicationhosts.config во всех средах, более прагматичный подход - просто реализовать httpmodule для распаковки файлов svg.
Смотрите этот пост для примера кода: http://laubplusco.net/gzip-svg-files-asp-net/
У меня все еще была эта проблема, несмотря на то, что я включил статическое и динамическое сжатие через консоль удаленного управления IIS.
Мне наконец удалось решить эту проблему, изменив тип пантомимы .tff
файлы из application/octet-stream
к font/ttf
на IIS.