我正在爲Web內容實施Deflate和GZip壓縮。 .NET Framework DeflateStream的性能非常好(它並不像SharpZipLib那樣好壓縮,但速度更快)。不幸的是,它(和我知道的所有其他庫)錯過了寫入預壓縮數據的函數,如stream.WritePrecompressed(byte [] buffer)。Deflate Compression Stream可以插入預壓縮的數據。 .NET庫存在嗎?
使用此功能可以在流中插入預壓縮塊。這可以減少壓縮此部分的CPU負載並提高Web服務器的總吞吐量。
是否有任何管理庫能夠做到這一點?或者,ComponentAce有沒有比ZLIB.NET好的起點來做到這一點?
你確定它甚至有可能嗎?使用deflate算法進行壓縮會建立基於已經壓縮的數據的內部數據結構,如果向流中注入數據,解壓縮很可能不起作用,除非您還在解壓縮期間去除這些部分。 – 2009-09-11 12:32:04
是的,它應該是可能的,Deflate流被組織在可以重新啓動或更改壓縮的塊中。插入可以開始一個新的塊。如果可能的話,插入的預壓縮塊也可以具有特殊的頭部以適應現有的霍夫曼樹。如果不是,它開始一個新的。 – 2009-09-11 12:58:32