2013-12-05 4 views
7

Я создал файл web.config, который успешно включает статическое сжатие для текстовых и информационных ресурсов. Однако очевидное решение, показанное ниже, похоже, не влияет на сжатие .svg (подтвердил, что кодировка содержимого gzip не установлена ​​в заголовке ответа для файлов .svg, но установлена ​​для .html, css и т. Д. С помощью инструментов разработчика Chrome) ,Как включить сжатие gzip для файлов SVG в IIS?

Вот мой web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpCompression minFileSizeForComp="1024" MaxDiskSpaceUsage="500"> 
      <scheme name="gzip"/> 
      <staticTypes> 
       <add mimeType="text/*" enabled="true"/> 
       <add mimeType="message/*" enabled="true"/> 
       <add mimeType="application/javascript" enabled="true"/> 
       <add mimeType="image/svg+xml" enabled="true"/> 
       <add mimeType="application/json" enabled="true" /> 
       <add mimeType="*/*" enabled="false"/> 
      </staticTypes> 
     </httpCompression> 
     <urlCompression doStaticCompression="true" doDynamicCompression="true"/> 
     <staticContent> 
      <remove fileExtension=".svg" /> 
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" /> 
      <remove fileExtension=".svgz" /> 
      <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 

Мотивация для этого вопроса заключается в предоставлении сжатых шрифтов SVG в соответствии с рекомендациями Google Page Speed ​​Insights. Я тестировал этот web.config на IIS 7.5/Windows 7 и IIS 8/Windows Server 2012.

Любые идеи?

+0

Вы нашли ответ на это? Я использую IIS 8, и он пропускает Content-Encoding: gzip для моих SVG-файлов, я не могу получить SVGZ-файлы для рендеринга, чтобы сохранить свою жизнь. Но в соответствии с информацией о скорости страницы мои обычные SVG-файлы не скремблированы, хотя я вижу, что заголовок применяется в веб-инспекторе – ddilsaver

+0

@ddilsaver Пока нет решения. – user3072310

+0

Решение здесь: http://stackoverflow.com/a/23940235/2476450 –

ответ

1

IIS не будет gzip слишком маленьких файлов, и вы можете настроить размер мини-диска. В IIS 7.5 значение по умолчанию для minFileSizeForComp: .

Ваш файл svg слишком мал? Я настраиваю httpCompression в графическом интерфейсе администратора IIS (не web.config), и он работает хорошо.

Вы можете увидеть microsoft httpCompression config reference. пример код:

<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="application/javascript" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
    </dynamicTypes> 
    <staticTypes> 
     <add mimeType="text/*" enabled="true" /> 
     <add mimeType="message/*" enabled="true" /> 
     <add mimeType="application/javascript" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
    </staticTypes> 
</httpCompression> 

Вы можете также использовать сжатый .svgz файл вместо .svg файла для сохранения CPU.

Для конфига контента кодирования GZIP для .svgz файла, см: How to add Encoding for specific file types?

<system.webServer> 
    <rewrite> 
     <outboundRules> 
      <rule name="Rewrite SVGZ header" preCondition="IsSVGZ" stopProcessing="true"> 
       <match serverVariable="RESPONSE_Content_Encoding" pattern=".*" /> 
       <action type="Rewrite" value="gzip" /> 
      </rule> 
      <preConditions> 
       <preCondition name="IsSVGZ"> 
        <add input="{PATH_INFO}" pattern="\.svgz$" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
    <staticContent> 
     <mimeMap fileExtension=".svg" mimeType="image/svg+xml" /> 
     <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" /> 
    </staticContent> 
</system.webServer> 
Смежные вопросы