Ari*_*ian 5 c# asp.net gzip response http-compression
我想在我的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压缩时:
public class CompressModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
}
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-Encoding", "gzip");
}
public void Dispose()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我在每一页中都得到了这个:
您是否将这些代码添加到您的 web.config 文件(对于 css 和 javascript 文件):
<system.webServer>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
...
Run Code Online (Sandbox Code Playgroud)
也许这个链接可以帮助您 如何在 ASP.NET 中实现 GZip 压缩?
归档时间: |
|
查看次数: |
273 次 |
最近记录: |