【问题标题】:Enable IIS7 gzip启用 IIS7 gzip
【发布时间】:2010-10-16 16:07:20
【问题描述】:

如何启用 IIS7 对 js 和 css 等静态文件进行 gzip 压缩,如何在发送到客户端之前测试 IIS7 是否真的对它们进行 gzip 压缩?

【问题讨论】:

    标签: iis iis-7 compression gzip


    【解决方案1】:

    配置

    您可以在 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>
    

    测试

    要测试压缩是否有效,请使用developer tools in ChromeFirebug for Firefox 并确保设置了HTTP 响应标头:

    Content-Encoding: gzip
    

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

    【讨论】:

    • @DenNukem,抱歉,我不太确定。我只在 IIS7 上测试过这个。还有人愿意发表评论吗?
    • 当心——它只有在 applicationhost.config 中的 httpCompression 部分被解锁时才有效。默认情况下,该部分被锁定以进行修改,因此在 web.config 中覆盖不起作用。在这上面浪费了几个小时。 stackoverflow.com/a/2894695/245460,见下文评论。
    • 确保它是 Web 角色的已安装功能,并且来自 MSDN:“您还可以为 MIME 类型添加通配符条目。但是,您只能为 Web 服务器级别设置 MIME 类型。例如,要为默认网站启用所有 MIME 类型的静态压缩,首先为服务器级别的 MIME 类型添加通配符条目,然后为默认网站启用静态压缩。"
    • 动态压缩也不起作用,除非您在服务器上安装了动态内容压缩模块(可通过 Web 平台安装程序获得)。如果您使用的是 Css/Js 包,您将需要它。
    • 只有 css 被压缩,.js 没有。另外,尝试添加application/x-javascript。与tomcat一起使用,因此删除了directory参数。
    【解决方案2】:

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

    【讨论】:

    • 在 Windows Server 2008 R2 中,它位于服务器管理器 > 角色 > Web 服务器 (IIS) 下。单击“角色”部分中的“添加角色服务”。 “动态内容压缩”列在“性能”标题下。
    【解决方案3】:

    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 消息的所有信息,包括压缩、文件大小(您可以将其与服务器上的文件大小进行比较)。

    【讨论】:

    • 我使用的是共享主机,不需要编写任何代码来启用 GZIP 输出压缩。仅通过 Web.config 就可以了。看我的回答:stackoverflow.com/questions/702124/enable-iis7-gzip/…
    • 我将前三行放在我要压缩的一个 aspx 页面的开头,它可以工作!谢谢!这比任何其他方法都省事得多,而且它适用于我的 IIS 6。
    • 这绝对是这样做的方法。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      Windows 10

      Windows 服务器 2012 R2

      窗口服务器 2016

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              另一种无需安装任何东西即可进行测试的简单方法,它也不依赖于 IIS 版本。将您的网址粘贴到此link - SEO Checkup

              添加到 web.config:http://www.iis.net/configreference/system.webserver/httpcompression

              【讨论】:

                【解决方案10】:

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

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

                【讨论】:

                猜你喜欢
                • 2011-10-22
                • 1970-01-01
                • 2012-09-19
                • 2011-02-08
                • 2017-02-08
                • 2010-10-21
                • 2011-03-12
                • 2011-06-10
                • 2013-12-29
                相关资源
                最近更新 更多