优化知识

IIS7.0中GZIP启用动态内容压缩等问题
发表时间:2018-01-14     阅读次数:1362

IIS7.0中GZIP启用动态内容压缩等问题

这几天在折腾网站搬家的事情,虽然搬家的过程很简单,但是遇到的小问题特别多,今天就给大家分享下windows 2008 IIS7.0下开启GZIP的问题。

IIS7.0下开启gzip教程,网上一搜一大把,但大家都能发现一个问题,教程都是复制粘贴的结果,如果我的教程和网上一样我就不会写了,我主要强调几点网上很少介绍到的。

在II7.0中的gzip压缩与II6的功能差距还是比较大的,II6中定义压缩的文件类型是以文件后缀来区别的,而II7中则是根据mimeType来判别压缩的文件。在设置上的差别也是比较大的,因为我是个比较背的人,所以什么问题都被我碰到了。

如果你是IIS6请戳这里:IIS6.0服务器完美开启Gzip压缩

启用动态内容压缩

II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问题比较多。有的II7配置web服务器角色的时候可能没有安装启用动态内容压缩,所以这个钩子是灰色的,需要再次安装。

如图提示:“为安装动态内容压缩模块”

打开web服务器,右侧添加角色服务,

找到动态内容压缩并勾选,点击下一步,等待安装结束就可以了。

最后,在II7中,应用GZIP压缩到所有网站中

 

Gzip临时压缩目录给予写入权限

配置完之后需要给予压缩缓存目录的写入权限。地址可以看图一。

因为iis6的缓存目录的权限为IIS_WPG用户组、IIS用户写入权限

在IIS 7.0中:IUSR内建帐号替代了IUSR_MachineName帐号IIS_IUSRS内建组替代了IIS_WPG组

所以,需要缓存目录给予IUSR用户组的写入权限。

配置启用压缩的文件类型及其他选项

这就是网上能够搜索到最多的教程了,为了确保教程的完整性,我复制粘贴下。

IIS并不是对所有内容都启用了压缩,而是有选择的进行压缩。我们无法直接在IIS7管理器中配置这些压缩选项。我们首先需要在C:WindowsSystem32inetsrvconfig文件夹下找到applicationhost.config文件,打开之后找到如下一节内容:

<httpCompression directory="%SystemDrive%inetpub	empIIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-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>

可以看到iis7的gzip压缩是基于文件的mimetype的,如html.css就统一归纳到“text/*”中

另外对于JS文件的压缩:

由于js文件通常稳定之后不会再被修改了,因此建议改成静态压缩——即把dynamicTypes这一节中的application/x-javascript挪到静态压缩节中。这样保证每次脚本都是被压缩过返回的。