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

2019-05-12 20:00发布

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

谷歌浏览器审计的结果:

  1. 启用gzip压缩(4)
  2. 压缩以下资源使用gzip可以用约三分之二(〜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

Answer 1:

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

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

你可以找到在此配置元素的文档iis.net/ConfigReference 。 这是等价的:

  1. 打开Internet信息服务(IIS管理器)
  2. 通过左侧的树视图导航,直至找到要修改的虚拟目录
  3. 选择适当的虚拟目录,以便在右侧窗格中的标题变成所述虚拟目录的名称。
  4. 在右侧窗格中选择“压缩”“IIS”下
  5. 勾选两个选项,并选择“应用”下,在最右侧“操作”。

:(正如在评论中指出),你需要确保HTTP动态压缩是装否则设置doDynamicCompression="true"将不会有任何效果。 要做到这一点,最快捷的方法是:

  1. 启动>键入optionalfeatures (这是去的最快的方法“打开Windows功能打开或关闭”窗口)
  2. 导航到Internet Information Services>万维网服务>性能特点,在“Windows功能”树状
  3. 确保“动态内容压缩”打勾
  4. 单击“确定”,等待,而Windows将安装该组件


Answer 2:

你可以这样做的代码,如果你愿意这样做。 我会做这每一个控制从继承的basecontroller与低于此属性装饰。

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);
        }
    }
}


Answer 3:

启用压缩/在服务器级别禁用。 查看IIS管理控制台IIS压缩模块。

以下是IIS的指令从微软的网站。



文章来源: How do I enable gzip compression when using MVC3 on IIS7?