有谁知道如何在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级别设置gzip压缩,还是只能在IIS管理控制台中执行此操作?
我想在我的Asp.Net网站中压缩响应。我写了这段代码:
public static void CompressPage(HttpRequest Request, HttpResponse Response)
{
string acceptEncoding = Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = Response.Filter;
if (acceptEncoding.IsEmpty())
{
return;
}
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("gzip"))
{
Response.Filter = new GZipStream(prevUncompressedStream, CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate"))
{
Response.Filter = new DeflateStream(prevUncompressedStream, CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "deflate");
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为Page_Load事件:
protected void Page_Load(object sender, EventArgs e)
{
...
ZipHtmlPage.CompressPage(Request, Response);
}
Run Code Online (Sandbox Code Playgroud)
问题是当我运行有无上述代码的代码时Page_Load,响应的大小不会改变。
问题出在哪里?
谢谢
编辑1)
我认为这"Content-Encoding", "gzip"不会增加标题:
不知道为什么
编辑2)
当我HttpModule用于执行http压缩时: …
我只想调整我的方法来传输我在浏览器接受gzip时压缩的数据.该else部分已经有效.我只是想调整if部分.下面是代码:
private void writeBytes()
{
var response = this.context.Response;
if (canGzip)
{
response.AppendHeader("Content-Encoding", "gzip");
//COMPRESS WITH GZipStream
}
else
{
response.AppendHeader("Content-Length", this.responseBytes.Length.ToString());
response.ContentType = this.isScript ? "text/javascript" : "text/css";
response.AppendHeader("Content-Encoding", "utf-8");
response.ContentEncoding = Encoding.Unicode;
response.OutputStream.Write(this.responseBytes, 0, this.responseBytes.Length);
response.Flush();
}
}
Run Code Online (Sandbox Code Playgroud) 我无法为AWS Elastic Beanstalk创建适当的部署包以在Windows IIS环境中启用gzip压缩.
我在web配置启用描述这里.这仅适用于静态文件,动态文件按原样提供.
有人有解决方案吗?
编辑: IIS还有另一个问题.它不会压缩从代理请求的文件,也会在第一次请求时提供原始文件.这会导致CDN提供未压缩的文件,因为它们的端点会缓存原始文件.
windows iis gzip amazon-web-services amazon-elastic-beanstalk