2008-03-11 10:28 Q3 部份的增補說明
Q3 是介紹如何使用 .NET Framework 2.0 所新增的 GZipStream 與 DeflateStream 來壓縮資料的 Q&A,用在文字資料上確實有其功效,但用在二進位資料時可能會發生壓縮失靈的問題。
詳細的資訊可參考:
http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!1886.entry
所以在 MSDN Library 中有加入對這個問題的增補說明:
DeflateStream 和 GZipStream 中的壓縮功能會公開 (Expose) 為資料流。由於資料的讀取方式是以位元組為單位逐一讀取,因此無法執行多項傳遞作業來判斷壓縮所有檔案或大型資料區塊的最佳方式。DeflateStream 和 GZipStream 類別的最佳使用方式是用於未壓縮的資料來源。如果來源資料已經壓縮,使用這些類別可能會增加資料流的實際大小。
因此文中建議對 GIF/JPEG 的部份不要使用這兩個類別做壓縮處理,目前範圍可擴大為帶有 In-compressible (無法壓縮) 資料區塊的二進位資料檔,盡可能不要使用這兩個類別來做壓縮處理。
致謝:感謝璉璉大的建議。

