【发布时间】:2010-10-16 16:07:20
【问题描述】:
如何启用 IIS7 对 js 和 css 等静态文件进行 gzip 压缩,如何在发送到客户端之前测试 IIS7 是否真的对它们进行 gzip 压缩?
【问题讨论】:
标签: iis iis-7 compression gzip
如何启用 IIS7 对 js 和 css 等静态文件进行 gzip 压缩,如何在发送到客户端之前测试 IIS7 是否真的对它们进行 gzip 压缩?
【问题讨论】:
标签: iis iis-7 compression gzip
您可以在 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 Chrome 或Firebug for Firefox 并确保设置了HTTP 响应标头:
Content-Encoding: gzip
请注意,如果响应代码为 304(未修改),则不会出现此标头。如果是这种情况,请进行完全刷新(按住 shift 或 control 的同时按下刷新按钮)并再次检查。
【讨论】:
.js 没有。另外,尝试添加application/x-javascript。与tomcat一起使用,因此删除了directory参数。
您需要在 Windows 功能控制面板中启用该功能:
【讨论】:
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 消息的所有信息,包括压缩、文件大小(您可以将其与服务器上的文件大小进行比较)。
【讨论】:
如果您将 YSlow 与 Firebug 一起使用并分析您的页面性能,YSlow 肯定会告诉您页面上的哪些工件没有经过 gzip 压缩!
【讨论】:
如果您还尝试 gzip 动态页面(如 aspx)但它不起作用,可能是因为该选项未启用(您需要使用 Windows 功能安装动态内容压缩模块):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
【讨论】:
另一种无需安装任何东西即可进行测试的简单方法,它也不依赖于 IIS 版本。将您的网址粘贴到此link - SEO Checkup
添加到 web.config:http://www.iis.net/configreference/system.webserver/httpcompression
【讨论】:
尝试安装了 Firebug 插件的 Firefox。我正在使用它; Web 开发人员的绝佳工具。
我也使用 web.config 在我的 IIS7 中启用了 Gzip 压缩。
【讨论】: