24

我在一个共享的虚拟主机上,我只能访问 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>
4

5 回答 5

48

默认情况下,IIS 不在 httpCompression 模块中包含这些 MIME 类型。您需要修改您的 applicationHost.config 文件:C:\Windows\System32\inetsrv\config

此文件将影响您的所有网站,并且必须在 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>

这些是我压缩SVGWOFFEOTTTF文件的个人设置。

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

更新

WoffWoff2文件已被压缩,因此您无需执行此操作。实际上,如果您对它们进行 gzip,客户端将失去性能。

于 2014-05-29T18:19:53.133 回答
8

需要注意的重要一点是,从以下设置修改您的applicationHost.config (在 %windir%\system32\inetsrv\config 中):

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

到:

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

将在您的web.config中的 system.webServer 标记下启用 httpCompression 标记的配置。

于 2015-03-16T17:46:58.533 回答
5

问题在于,默认情况下,IIS 不会在可压缩的 mime 类型列表中包含 web 字体的 mime 类型。包含 Javascript 和 css 文件,这就是您看到它们被压缩的原因。

您的 httpCompression 设置可能没有被使用,默认情况下这些设置被锁定并且不能在 web.config 中设置。看看这个页面: http: //support.microsoft.com/kb/969062。在“更多信息”部分它说,“您只能为 Web 服务器级别设置 MIME 类型。”

我可以让它在我的本地服务器上工作的唯一方法是在 applicationHost.config 的 httpCompression 部分中添加 mime 类型(这需要管理员访问权限)。在 web.config 中设置它们没有影响。

于 2013-04-08T20:46:06.730 回答
4

如果您无法在所有环境中访问 applicationhosts.config,则更实用的方法是简单地实现一个用于 gzip 压缩 svg 文件的 httpmodule。

有关代码示例,请参阅此帖子:http: //laubplusco.net/gzip-svg-files-asp-net/

于 2014-09-03T12:54:48.513 回答
0

尽管通过 IIS 远程管理控制台启用了静态和动态压缩,但我仍然遇到此问题。

我终于设法通过将.tff文件的 mime 类型从application/octet-stream更改为font/ttfIIS 来解决它。

于 2019-07-20T14:11:23.890 回答