首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 中實現 HTTP 壓縮(GZIP/DEFLATE)與避坑指南

     編輯:關於ASP.NET

Global.asax 中啟用壓縮

在 Application_BeginRequest 根據客戶端 Accept-Encoding 標頭動態設定回應濾流器:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    string acceptEncoding = app.Request.Headers["Accept-Encoding"];
    if (string.IsNullOrEmpty(acceptEncoding)) return;

    acceptEncoding = acceptEncoding.ToLower();
    Stream prevStream = app.Response.Filter;

    if (acceptEncoding.Contains("gzip"))
    {
        app.Response.Filter = new GZipStream(prevStream, CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "gzip");
    }
    else if (acceptEncoding.Contains("deflate"))
    {
        app.Response.Filter = new DeflateStream(prevStream, CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "deflate");
    }
}

已知問題與修正

  • TreeView 圖示失效:WebResource.axd 輸出被壓縮導致圖片無法載入。
  • 解決:在壓縮邏輯前過濾 WebResource.axd、ScriptResource.axd 等靜態資源請求,不進行壓縮。

效能考量

壓縮可大幅減少傳輸體積(通常 70%+),但會增加 CPU 負載。建議搭配 IIS 內建動態壓縮模組,或使用 Fiddler 實測效果後再決定是否啟用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved