web-dev-qa-db-ja.com

iis7をgzipフォント-faceフォントファイルに取得できません

共有ウェブホスト上のimで、iis7.5のweb.configファイルにのみアクセスできます。 javascriptファイルとcssファイルはgzipで圧縮されているので機能しますが、iis7.5では静的圧縮が有効になっているため、デフォルトで機能すると思います。ただし、フォントファイルを取得してgzipで圧縮することはできません。送信時のサイズは同じであり、応答ヘッダーにはcontent-encoding: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>
21
Masu

デフォルトでは、IISはこれらのMIMEタイプをhttpCompressionモジュールに含めません。次の場所にあるapplicationHost.configファイルを変更する必要があります:C:\ Windows\System32\inetsrv\config

このファイルはすべてのWebサイトに影響するため、64ビットWindowsで64ビットテキストエディターで開く必要があります。 (Notepad2 64ビット、メモ帳、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で圧縮すると、クライアントのパフォーマンスが低下します。

45

注意すべき重要なことは、次の設定からapplicationHost.config(%windir%\ system32\inetsrv\config内)を変更することです。

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

に:

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

web.configのsystem.webServerタグの下にあるhttpCompressionタグの構成を有効にします。

7
icodecsharp

問題は、デフォルトでIISは、圧縮可能なmimeタイプのリストにWebフォントのmimeタイプを含めないことです。Javascriptファイルとcssファイルが含まれているため、表示されます。それらは圧縮されます。

HttpCompression設定はおそらく使用されていません。これらはデフォルトでロックされており、web.configで設定することはできません。このページを見てください: http://support.Microsoft.com/kb/969062 。 [詳細情報]セクションには、「WebサーバーレベルでのみMIMEタイプを設定できます」と記載されています。

これをローカルサーバーで機能させる唯一の方法は、applicationHost.configのhttpCompressionセクションにmimeタイプを追加することでした(これには管理者アクセスが必要です)。 web.configでそれらを設定しても影響はありませんでした。

5
Patrick

すべての環境でapplicationhosts.configにアクセスできない場合、より実用的なアプローチは、svgファイルをgzipするためのhttpmoduleを実装することです。

コード例については、この投稿を参照してください: http://laubplusco.net/gzip-svg-files-asp-net/

4
anderslaub

IISリモート管理コンソールを介して静的および動的圧縮を有効にしたにもかかわらず、この問題が発生していました。

IISで.tffファイルのmimeタイプをapplication/octet-streamからfont/ttfに変更することで、ようやく問題を解決できました。

0
lightsAreShiny