[英]How do I enable gzip compression when using MVC3 on IIS7?
有谁知道如何在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
您可以通过web.config
文件配置压缩,如下所示:
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
您可以在iis.net/ConfigReference上找到此配置元素的文档 。 这相当于:
注意:( 正如评论中指出的那样)您需要确保安装了Http Dynamic Compression,否则设置doDynamicCompression="true"
将不会产生任何影响。 最快的方法是:
optionalfeatures
(这是进入“打开或关闭Windows功能”窗口的最快方法) 如果您愿意,可以在代码中执行此操作。 我会创建一个基本控制器,每个控件都继承自己,并使用下面的属性来装饰它。
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压缩模块。
以下是来自microsoft站点的IIS的说明 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.