有人知道如何在MVC 3中启用gzip压缩吗?我正在使用IIS7。
Google Chrome Audit的结果:
- 启用gzip压缩(4)
- 使用gzip压缩以下资源可以将传输大小减少大约三分之二(~92.23KB):
- / mydomain /可以节省~1.53KB
- jquery-1.4.4.min.js可以节省~51.35KB
- Cufon.js可以节省~11.89KB
- Futura.js可以节省~27.46KB
醇>
答案 0 :(得分:138)
您可以通过web.config
文件配置压缩,如下所示:
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
您可以在iis.net/ConfigReference找到此配置元素的文档。这相当于:
注意:(正如评论中所指出的)您需要确保安装了Http Dynamic Compression,否则设置doDynamicCompression="true"
将不会产生任何影响。最快的方法是:
optionalfeatures
(这是获取“打开或关闭Windows功能”窗口的最快方式)答案 1 :(得分:31)
如果您愿意,可以在代码中执行此操作。我会创建一个基本控制器,每个控件都继承自己,并使用下面的属性来装饰它。
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);
}
}
}
答案 2 :(得分:12)
在服务器级别启用/禁用压缩。请参阅iis管理控制台中的IIS压缩模块。
以下是来自微软网站的the instructions for IIS。