有谁知道如何启用gzip压缩在MVC 3? 我使用的IIS7。
谷歌浏览器审计的结果:
- 启用gzip压缩(4)
- 压缩以下资源使用gzip可以用约三分之二(〜92.23KB)传输量减少:
- / MYDOMAIN /可以节省〜1.53KB
- jQuery的1.4.4.min.js可以节省〜51.35KB
- Cufon.js可以节省〜11.89KB
- Futura.js可以节省〜27.46KB
有谁知道如何启用gzip压缩在MVC 3? 我使用的IIS7。
谷歌浏览器审计的结果:
- 启用gzip压缩(4)
- 压缩以下资源使用gzip可以用约三分之二(〜92.23KB)传输量减少:
- / MYDOMAIN /可以节省〜1.53KB
- jQuery的1.4.4.min.js可以节省〜51.35KB
- Cufon.js可以节省〜11.89KB
- Futura.js可以节省〜27.46KB
您可以通过配置压缩web.config
文件,如下所示:
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
你可以找到在此配置元素的文档iis.net/ConfigReference 。 这是等价的:
注:(正如在评论中指出),你需要确保HTTP动态压缩是装否则设置doDynamicCompression="true"
将不会有任何效果。 要做到这一点,最快捷的方法是:
optionalfeatures
(这是去的最快的方法“打开Windows功能打开或关闭”窗口) 你可以这样做的代码,如果你愿意这样做。 我会做这每一个控制从继承的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);
}
}
}
启用压缩/在服务器级别禁用。 查看IIS管理控制台IIS压缩模块。
以下是IIS的指令从微软的网站。