不能让IIS7给gzip字体面字体文件(can't get iis7 to gzip fon

2019-07-18 10:28发布

在共享的虚拟主机IM和我只能访问为IIS7.5的web.config文件。 javascript文件和css文件gzip压缩,使作品,但我认为,在默认情况作品,因为静态压缩IIS7.5中启用。 但是,我不能让字体文件获得gzip压缩,它们是相同的尺寸发送和响应头不具有内容编码时: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>

Answer 1:

默认情况下,IIS不包括httpCompression模块中的MIME类型。 您需要修改您的applicationHost.config文件:C:\ WINDOWS \ SYSTEM32 \ INETSRV \ config中

此文件将影响所有的网站,并必须在64位Windows 64位的文本编辑器打开。 (的Notepad2 64位,记事本, 不使用记事本++)

<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,EOTTTF文件。

然后,只需在命令行中键入iisreset重新加载在IIS中配置,或重新启动计算机。

UPDATE

WOFFWoff2文件已经被压缩,所以你不需要这么做。 事实上,如果你gzip压缩的客户端将失去效能。



Answer 2:

需要注意的重要一点是,修改您的applicationHost.config(在%WINDIR%\ SYSTEM32 \ INETSRV \ CONFIG)从以下设置:

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

至:

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

将使你的web.config的system.webServer标签下的httpCompression标签的配置。



Answer 3:

问题是,默认情况下,IIS不包括MIME类型的可以被压缩的MIME类型列表中的网页字体。 JavaScript和CSS文件都包含这就是为什么你看到他们得到压缩。

很可能不使用你的httpCompression设置,这些默认锁定,无法在web.config中设置。 看看这个页面: http://support.microsoft.com/kb/969062 。 在“更多信息”一节,它说,“你可以设置MIME类型仅用于Web服务器的水平。”

我能得到这个在我的本地服务器上运行的唯一方法是在的applicationHost.config的httpCompression部分添加MIME类型(这需要管理员权限)。 在web.config中设置了它们不会影响。



Answer 4:

如果你不能在所有环境中访问applicationhosts.config更务实的做法仅仅是为了实现一个HTTP模块用于使用gzip压缩的SVG文件。

看到这个帖子的代码示例: http://laubplusco.net/gzip-svg-files-asp-net/



文章来源: can't get iis7 to gzip font-face font files