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

IIS 7.5 несовместимо с Gzip-файлами (с PHP и ASP.NET)

Я внес некоторые изменения в web.config сервера под управлением IIS 7.5 улучшают производительность (в основном интерфейсную).

Сторонний инструмент тестирования сообщает, что на сайте работает «PHP / 5.3.10, ASP.NET», и, если не изменяет память, это ASP.NET 4.5.

Я думаю, это из-за странного сочетания технологий (например, запуск PHP на IIS), но прикосновение к чему-либо заставляет меня нервничать.

Я добавил (только) директивы для заголовков expires и gzip из Конфигурация сервера H5BP IIS

Думаю, я добавил эти директивы днем ​​15 января 2013 года. История тестирования сайта с помощью инструмента тестирования производительности Pingdom: доступна здесь.

Видно, где резко падает размер перевода (кликните по вкладке истории).

С тех пор кажется, что каждый раз, когда я его тестирую, разные файлы (обычно такие ресурсы, как CSS и JS) обслуживаются или не обслуживаются с помощью gzip без каких-либо рифм или причин. Иногда кажется, что все обслуживается с помощью gzip, иногда почти ничего не обслуживается сжатым, но обычно это где-то посередине (как вы можете видеть в истории).

Что происходит?

Как я могу это исправить?

Этот сайт не находится в активной разработке, хотя на страницу были добавлены некоторые дополнительные данные (скрипты плагинов Google Analytics, которые я добавил для улучшения отслеживания) после 15 числа, нет ничего, что могло бы объяснить такие большие различия и несоответствия.

Я предполагаю, что это связано с ресурсами процессора для сжатия, и этот вопрос кажется близким: Почему эффективность сжатия gzip в IIS разная?

Я нашел вероятного виновника в комментариях к этой странице; weblog.west-wind.com

По сути, OOTB, IIS будет выполнять сжатие только в том случае, если файл будет запрошен как минимум дважды за 10 секунд.

Это настраивается через web.config - к сожалению, он заблокирован по умолчанию, поэтому вам нужно отредактировать applicationhost.config, чтобы изменить overrideModeDefault = "DENY" на ALLOW.

Ссылка на это здесь: форумы.iis.net

Соответствующие фрагменты конфигурации следующие. Вы увидите, что я также возился с типом содержимого для шрифтов SVG, поскольку по умолчанию IIS не будет их архивировать, поэтому, заставляя их использовать text / xml, они тоже сжимаются. (Google PageSpeed жалуется на это)

web.config

  <system.webServer>
        <serverRuntime frequentHitThreshold="1" enabled="true" />
        <staticContent>
              <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
              <remove fileExtension=".svg" />
              <mimeMap fileExtension=".svg" mimeType="text/xml" />
        </staticContent>
        <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
            <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
            <dynamicTypes>
                <add mimeType="*/*" enabled="true" />
            </dynamicTypes>
            <staticTypes>
                <add mimeType="image/svg+xml" enabled="true" />
                <add mimeType="text/xml" enabled="true" />
                <add mimeType="*/*" enabled="true" />
            </staticTypes>
        </httpCompression>
        <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
    </system.webServer>

applicationHost.config

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