启用 IIS7 gzip

10 浏览
0 Comments

启用 IIS7 gzip

如何启用IIS7对静态文件(如js和css)进行gzip压缩,并且如何测试IIS7在发送给客户端之前是否真正进行了gzip压缩?

0
0 Comments

问题原因:默认情况下,IIS7的httpCompression部分在applicationhost.config中是锁定的,无法在web.config中修改。因此,需要解锁httpCompression才能在web.config中启用GZIP压缩。

解决方法:在web.config文件中添加以下代码,以解锁httpCompression并启用GZIP压缩:


  
    
    
      
      
      
      
    
    
      
      
      
      
    
  
  

测试方法:使用Chrome开发者工具或Firebug for Firefox检查HTTP响应头是否设置了"Content-Encoding: gzip"。请注意,如果响应代码是304(未修改),则该头部信息不会存在。如果是这种情况,可以进行完整刷新(按住Shift或Control键并同时点击刷新按钮)然后再次检查。

注意事项:确保已安装了Web角色的GZIP压缩功能,并在applicationhost.config中添加了通配符条目以启用静态压缩。此外,如果要使用Css/Js捆绑,还需要安装服务器上的Dynamic Content Compression模块。

最后,还需要注意到CSS文件可以被压缩,但JS文件无法被压缩的问题。如果使用Tomcat,可能需要移除directory参数。

0
0 Comments

问题出现的原因:没有在Windows Features控制面板中启用该功能。

解决方法:

1. 打开Windows Features控制面板。

2. 在Windows Server 2008 R2中,该控制面板位于Server Manager > Roles > Web Server (IIS)下。

3. 在“Roles”部分点击“Add Role Services”。

4. 在“Performance”标题下,找到“Dynamic Content Compression”选项。

5. 勾选“Dynamic Content Compression”选项。

6. 点击“OK”或“Apply”按钮保存更改。

这样就成功解决了问题。

0
0 Comments

问题的出现的原因:

- 如果没有访问最终的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消息的所有信息,包括压缩、文件大小(可以与服务器上的文件大小进行比较)。

- 在共享托管上使用Web.config就可以启用GZIP输出压缩,不需要编写任何代码。参考答案:stackoverflow.com/questions/702124/…

- 将前三行放在我想要压缩的第一个aspx页面的开头,它可以工作!谢谢!这比任何其他方法都要简单得多,对于我来说,在IIS 6上也可以工作。

- 这绝对是正确的方法。

0