如何在IIS7上使用MVC3时启用gzip压缩?

有谁知道如何在MVC 3中启用gzip压缩? 我正在使用IIS7。

谷歌Chrome审计的结果:

  1. 启用gzip压缩(4)
  2. 使用gzip压缩以下资源可将其传输大小减less约三分之二(约92.23KB):
  3. / mydomain /可以保存〜1.53KB
  4. jquery-1.4.4.min.js可以节省〜51.35KB
  5. Cufon.js可以保存〜11.89KB
  6. Futura.js可以节省〜27.46KB

您可以通过您的web.config文件configuration压缩,如下所示:

 <system.webServer> <urlCompression doStaticCompression="true" doDynamicCompression="true" /> </system.webServer> 

您可以在iis.net/ConfigReference中find此configuration元素的文档 。 这相当于:

  1. 打开Internet信息服务(IISpipe理器)
  2. 浏览左侧的树形视图,直到到达想要修改的虚拟目录
  3. select适当的虚拟目录,以便右侧窗格的标题成为所述虚拟目录的名称。
  4. 在右侧窗格的“IIS”下select“压缩”
  5. 选中这两个选项,然后在最右边的“操作”下select“应用”。

注意:( 正如在注释中指出的那样)您需要确保安装了Http Dynamic Compression,否则设置doDynamicCompression="true"将不会产生任何影响。 最快的方法是:

  1. 开始>键入optionalfeatures (这是进入“打开或closuresWindowsfunction”窗口的最快捷方式)
  2. 导航到“Windowsfunction”树视图中的Internet信息服务>万维网服务>性能function
  3. 确保选中“dynamic内容压缩”
  4. 点击“确定”,等待Windows安装组件

如果你愿意的话,你可以用代码来做到这一点。 我会做一个基础控制器,每个控件inheritance和装饰它下面的这个属性。

 public class CompressAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"]; if (string.IsNullOrEmpty(encodingsAccepted)) return; encodingsAccepted = encodingsAccepted.ToLowerInvariant(); var response = filterContext.HttpContext.Response; if (encodingsAccepted.Contains("deflate")) { response.AppendHeader("Content-encoding", "deflate"); response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress); } else if (encodingsAccepted.Contains("gzip")) { response.AppendHeader("Content-encoding", "gzip"); response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); } } } 

在服务器级别启用/禁用压缩。 请参阅iispipe理控制台中的IIS压缩模块。

以下是来自Microsoft网站的IIS说明 。