Не может получить iis7 для gzip шрифтовых файлов шрифтов - программирование
Подтвердить что ты не робот

Не может получить iis7 для gzip шрифтовых файлов шрифтов

im на общем веб-хостинге, и у меня есть доступ к файлу web.config для iis7.5. Файлы javascript и файлы css gzipped, поэтому это работает, но я думаю, что это работает по умолчанию, потому что статическое сжатие включено в iis7.5. однако я не могу получить файлы шрифтов, чтобы получить gzipped, они имеют одинаковый размер при отправке, а заголовки ответов не имеют кодировки содержимого: 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>
4b9b3361

Ответ 1

По умолчанию 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 или перезагрузить компьютер.

UPDATE

Файлы Woff и Woff2 уже сжаты, поэтому вам не нужно это делать. Фактически, клиент потеряет производительность, если вы gzip те.

Ответ 2

Важно отметить, что вы изменяете свой applicationHost.config (в% windir%\system32\inetsrv\config) из следующего параметра:

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

в

<section name="httpCompression" overrideModeDefault="Allow" />

позволит настроить тэг httpCompression под тегом system.webServer в web.config.

Ответ 3

Проблема заключается в том, что по умолчанию IIS не включает типы MIME для веб-шрифтов в список типов MIME, которые могут быть сжаты. Javascript и CSS файлы включены, поэтому вы видите, как они сжимаются.

Ваши настройки httpCompression, вероятно, не используются, они по умолчанию заблокированы и не могут быть установлены в файле web.config. Взгляните на эту страницу: http://support.microsoft.com/kb/969062. В разделе "Дополнительная информация" говорится: "Вы можете установить типы MIME только для уровня веб-сервера".

Единственный способ заставить это работать на моем локальном сервере - это добавить типы mime в раздел httpCompression applicationHost.config (для этого требуется доступ администратора). Установка их в web.config не повлияла.

Ответ 4

Если вы не можете получить доступ к applicationhosts.config во всех средах, более прагматичный подход - это просто реализовать httpmodule для gzipping svg файлов.

Смотрите это сообщение для примера кода: http://laubplusco.net/gzip-svg-files-asp-net/

Ответ 5

У меня все еще была эта проблема, несмотря на то, что я включил статическое и динамическое сжатие через консоль удаленного управления IIS.

Мне, наконец, удалось решить эту проблему, изменив тип .tff файлов .tff с application/octet-stream на font/ttf в IIS.