10

テキストおよびメッセージ リソースの静的圧縮を有効にする web.config ファイルを作成しました。ただし、以下に示す明白な解決策は、.svg 圧縮に影響を与えないようです (gzip コンテンツ エンコーディングが .svg ファイルの応答ヘッダーに設定されていないことを検証しましたが、chrome 開発者ツールを介して .html、css などに設定されています)。 .

これが私の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>

この質問の動機は、Google Page Speed Insights が推奨する圧縮 SVG フォントを提供することです。IIS 7.5/Windows 7 および IIS 8/Windows Server 2012 でこの web.config をテストしてきました。

何か案は?

4

1 に答える 1

4

IIS は小さすぎるファイルを gzip することはなく、最小サイズを構成できます。IIS 7.5 では、minFileSizeForCompの既定値は2700です。

svg ファイルが小さすぎませんか? IIS 管理者 GUI (web.config ではない) で httpCompression を構成すると、うまく機能します。

Microsoft httpCompression 構成リファレンスを参照してください。サンプルコード:

<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>

CPU を節約するために、 .svgファイルの代わりに圧縮された .svgzファイルを使用することもできます。

.svgzファイルの gzip コンテンツ エンコーディングを設定するには、次を参照してください:特定のファイル タイプのエンコーディングを追加する方法?

<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>
于 2015-04-13T01:36:23.847 に答える