启用 IIS7 gzip

发布于 2024-07-16 13:55:07 字数 84 浏览 5 评论 0原文

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

How can I enable IIS7 to gzip static files like js and css and how can I test if IIS7 is really gziping them before sending to the client?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

阳光下慵懒的猫 2024-07-23 13:55:07

配置

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

测试

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

Content-Encoding: gzip

请注意,如果响应代码为 304(不是修改的)。 如果是这种情况,请进行完全刷新(按住 Shift 或 Control 键同时按下刷新按钮)并再次检查。

Configuration

You can enable GZIP compression entirely in your Web.config file. This is particularly useful if you're on shared hosting and can't configure IIS directly, or you want your config to carry between all environments you target.

<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>

Testing

To test whether compression is working or not, use the developer tools in Chrome or Firebug for Firefox and ensure the HTTP response header is set:

Content-Encoding: gzip

Note that this header won't be present if the response code is 304 (Not Modified). If that's the case, do a full refresh (hold shift or control while you press the refresh button) and check again.

巴黎盛开的樱花 2024-07-23 13:55:07

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

IIS 功能屏幕截图

You will need to enable the feature in the Windows Features control panel:

IIS feature screenshot

神经暖 2024-07-23 13:55:07

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

Global Gzip in HttpModule

If you don't have access to the final IIS instance (shared hosting...) you can create a HttpModule that adds this code to every HttpApplication.Begin_Request event :

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;

Testing

Kudos, no solution is done without testing. I like to use the Firefox plugin "Liveheaders" it shows all the information about every http message between the browser and server, including compression, file size (which you could compare to the file size on the server).

江挽川 2024-07-23 13:55:07

在 Windows 2012 r2 下,可以在这里找到:

在此处输入图像描述

under windows 2012 r2 it can be found here:

enter image description here

梦在深巷 2024-07-23 13:55:07

我只需要像 Charlie 提到的那样在 Windows 功能中添加该功能。对于在 Windows 10 或 Server 2012+ 上找不到它的人,请按如下方式找到它。 遇到了一些困难

我在 Windows 10 上

在此处输入图像描述

Windows Server 2012 R2

在此处输入图像描述

window server 2016

在此处输入图像描述

I only needed to add the feature in windows features as Charlie mentioned.For people who cannot find it on window 10 or server 2012+ find it as below. I struggled a bit

Windows 10

enter image description here

windows server 2012 R2

enter image description here

window server 2016

enter image description here

贵在坚持 2024-07-23 13:55:07

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

If you use YSlow with Firebug and analyse your page performance, YSlow will certainly tell you what artifacts on your page are not gzip'd!

清风挽心 2024-07-23 13:55:07

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

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

If you are also trying to gzip dynamic pages (like aspx) and it isnt working, its probably because the option is not enabled (you need to install the Dynamic Content Compression module using Windows Features):

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

丶视觉 2024-07-23 13:55:07

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

auf deutsch bitte schön

For all the poor guys who have to struggle with a german/deutsche Server :)

auf deutsch bitte schön

好菇凉咱不稀罕他 2024-07-23 13:55:07

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

test gzip

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

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

书信已泛黄 2024-07-23 13:55:07

尝试安装了 Firebug 插件的 Firefox。 我正在使用它; 对于网络开发人员来说是一个很棒的工具。

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

Try Firefox with Firebug addons installed. I'm using it; great tool for web developer.

I have enable Gzip compression as well in my IIS7 using web.config.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文