这几天在折腾网站搬家的事情,虽然搬家的过程很简单,但是遇到的小问题特别多,今天就给大家分享下windows 2008 IIS7.0下开启GZIP的问题。
IIS7.0下开启gzip教程,网上一搜一大把,但大家都能发现一个问题,教程都是复制粘贴的结果,如果我的教程和网上一样我就不会写了,我主要强调几点网上很少介绍到的。
在II7.0中的gzip压缩与II6的功能差距还是比较大的,II6中定义压缩的文件类型是以文件后缀来区别的,而II7中则是根据mimeType来判别压缩的文件。在设置上的差别也是比较大的,因为我是个比较背的人,所以什么问题都被我碰到了。
启用动态内容压缩
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:\Windows\System32\inetsrv\config文件夹下找到applicationhost.config文件,打开之后找到如下一节内容:
<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/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挪到静态压缩节中。这样保证每次脚本都是被压缩过返回的。