230

如何使 IIS7 能够 gzip 静态文件(如 js 和 css)以及如何在发送到客户端之前测试 IIS7 是否真的对它们进行 gzip 压缩?

4

10 回答 10

243

配置

您可以在Web.config文件中完全启用 GZIP 压缩。如果您在共享主机上并且无法直接配置 IIS,或者您希望您的配置在您的所有目标环境之间传输,这将特别有用。

<system.webServer>
  <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>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

测试

要测试压缩是否有效,请使用ChromeFirebug for Firefox中的开发人员工具,并确保设置了 HTTP 响应标头:

Content-Encoding: gzip

请注意,如果响应代码为 304(未修改),则不会出现此标头。如果是这种情况,请进行完全刷新(在按下刷新按钮时按住 shift 或 control)并再次检查。

于 2011-03-26T18:54:21.140 回答
58

您需要在 Windows 功能控制面板中启用该功能:

IIS 功能截图

于 2014-02-28T18:28:24.603 回答
37

HttpModule 中的全局 Gzip

如果您无权访问最终的 IIS 实例(共享主机...),您可以创建一个 HttpModule 将此代码添加到每个 HttpApplication.Begin_Request 事件:

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

测试

荣誉,没有测试就没有解决方案。我喜欢使用 Firefox 插件“ Liveheaders ”,它显示了浏览器和服务器之间每条 http 消息的所有信息,包括压缩、文件大小(您可以将其与服务器上的文件大小进行比较)。

于 2009-03-31T17:58:25.943 回答
5

在 windows 2012 r2 下可以在这里找到:

在此处输入图像描述

于 2016-11-16T07:56:39.647 回答
2

正如查理提到的,我只需要在 windows 功能中添加该功能。对于在 windows 10 或 server 2012+ 上找不到它的人,如下所示。我有点挣扎

视窗 10

在此处输入图像描述

视窗服务器 2012 R2

在此处输入图像描述

窗口服务器 2016

在此处输入图像描述

于 2017-04-24T14:46:00.103 回答
1

如果您将 YSlow 与 Firebug 一起使用并分析您的页面性能,YSlow 肯定会告诉您页面上的哪些工件不是经过 gzip 压缩的!

于 2009-04-01T11:28:10.147 回答
1

如果您还尝试 gzip 动态页面(如 aspx)但它不起作用,可能是因为未启用该选项(您需要使用 Windows 功能安装动态内容压缩模块):

http://support.esri.com/en/knowledgebase/techarticles/detail/38616

于 2013-11-12T02:56:37.483 回答
1

对于所有不得不与德国/德国服务器斗争的穷人:)

auf deutsch bitte schön

于 2018-09-07T13:16:54.950 回答
0

Another easy way to test without installing anything, neither is it dependent on IIS version. Paste your url to this link - SEO Checkup

test gzip

To add to web.config: http://www.iis.net/configreference/system.webserver/httpcompression

于 2014-04-30T02:11:01.023 回答
0

尝试安装了 Firebug 插件的 Firefox。我正在使用它;Web 开发人员的绝佳工具。

我也使用 web.config 在我的 IIS7 中启用了 Gzip 压缩。

于 2010-11-03T03:32:49.853 回答