Во-первых, давайте определим некоторые обычно запутанные термины:
deflate = compression_algorithm;
zlib = header + deflate + trailer;
gzip = header + deflate + trailer;
Я ищу библиотеку, которая в основном позволит мне сделать следующее:
if(method == "gzip"){
Response.Filter = new CompressionLibrary.OutputStream(Response.Filter, CompressionLibrary.Formats.GZIP);
}
else if(method == "deflate"){
Response.Filter = new CompressionLibrary.OutputStream(Response.Filter, CompressionLibrary.Formats.DEFLATE);
}
else if(method == "zlib"){
Response.Filter = new CompressionLibrary.OutputStream(Response.Filter, CompressionLibrary.Formats.ZLIB);
}
Я ищудля способа сравнительного тестирования 3 форматов сжатия для использования в Интернете.Я хотел бы, чтобы algorthims сжатия deflate для каждого формата были одинаковой точной реализацией.Я уже взломал zlib.net, чтобы заставить его давать мне сырой дефлат по команде (через «недокументированную функцию») ... однако, добавление заголовка gzip и трейлера немного не в моей лиге.
Кто-нибудь знает библиотеку .net, которая это делает?
Уточнение:
HTTP 1.1 deflate сжатие format - это формат сжатия zlib .Zlib - это обертка вокруг дефлата;он имеет 2-байтовый заголовок и 4-байтовый трейлер, всегда (когда методы и уровни сжатия идентичны).
Gzip использует один и тот же формат сжатых данных внутрикак zlib ... который является deflate (необработанный deflate, а не HTTP 1.1 deflate [который является zlib]).По моим собственным предварительным испытаниям данные в сжатом формате в 11 из 12 раз больше, чем zlib.
deflate - алгоритм сжатия, который используется для сжатия данных.Когда нет никаких методов-оберток (например, заголовков или трейлеров) вокруг дефлированных данных, я называю это «deflate» - возможно, мне следовало бы назвать это «raw deflate» .
Яанализ этих методов сжатия и их поддержки в веб-браузерах, и необходимо использовать один метод сжатия для всех трех типов.