2011-12-03 33 views
0

我看到人們只是檢測到請求瀏覽器支持http壓縮或不。如果支持,然後檢測支持gzip或deflate。關於httpcompression asp.net

,然後只添加屬性來響應物體像

HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip"); 

HttpContext.Current.Response.AppendHeader("Content-encoding", "deflate"); 

我只需要知道究竟是誰comresee的響應。它是Web服務器還是asp.net工作進程。請詳細討論是誰以及如何壓縮響應。謝謝

回答

1

其實你在這裏顯示的頭不是壓縮。是什麼使壓縮是您在Response.Filter設置Stream類,這壓縮是由Asp.Net彷彿有:

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

如果你做這個,然後壓縮由asp.net而不是做IIS。 iis然後檢測到文件已經全部準備好壓縮並且不再被壓縮。有時候我發現這個檢測失敗,頁面根本沒有顯示,所以在這種情況下,您可以禁用iis壓縮。

這裏是gZipStream類裏面asp.net http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

所以asp.net工作進程中取得的壓縮,如果你設置了GZipStream,在DeflateStream的

下面是一個例子文件壓縮由asp.net使用GZipStream http://www.dotnetperls.com/gzipstream

我更喜歡在asp.net而不是在iis上進行壓縮,因爲我對它有更多的控制。

+0

IIS壓縮比較好或者asp.net壓縮比較好。哪一個可以做更多的壓縮輸出。 –

+0

請告訴我哪一個更好.... gzip或deflate? –

+0

@ user750398 gZip是更好的和默認的,但你不決定,你要求瀏覽器選擇什麼喜歡使用acceptEncoding值 – Aristos