GZip, дефлация и sdch компресия (нетно избиране)

Gzip Deflate Sdch Compression



GZip и дефлация:

Gzip е формат на данните по подразбиране и понастоящем използва алгоритъма за дефлация само за компресиране на частта от данни
Deflate е алгоритъм за компресия, който е подобрение на кодирането на Huffman.

Deflate е почти идентичен с gzip декомпресиран код и може да се комбинира в една част от кода.
Единствената разлика е:

Deflate използва inflateInit (), а gzip използва inflateInit2 (), за да инициализира, още един параметър от inflateInit (): -MAX_WBITS, което означава обработка на сурови дефлатни данни. Тъй като блокът с компресирани данни zlib в данните gzip няма два байта на заглавката zlib. Използването на inflateInit2 изисква библиотеката zlib да игнорира заглавката на zlib. В ръководството за zlib windowBits се изисква да бъде 8..15, но всъщност други диапазони от данни имат специални ефекти, вижте коментарите в zlib.h, като отрицателни числа за сурово дефлиране.
Вариантът за дефлация на Apache може да няма заглавка zlib и трябва да добавите фалшива заглавка, за да се справите с нея. Тоест, MS deflation deflate (raw deflate). Първият байт на заглавката на zlib е 0x78, а двойният байт на втория байт, комбиниран с първия байт, трябва да се дели на 31. Вижте rfc1950 за подробности. Например, фалшивият хедър на zlib на Firefox е 0x7801, а python zlib.compress () води до хедър от 0x789c.

Дефлацията е най-основният алгоритъм. gzip добавя 10-байтов gzheader преди суровите данни на дефлацията и добавя 8 байта контролни байта (по избор crc32 и adler32) и идентификационни байтове за дължина до края.

SDCH:

Знаем, че за да се ускори мрежовото предаване, gzip обикновено се използва за компресиране на текст. Ако използвате най-новата версия на chrome за достъп до страницата, след това отворете мрежовия контролен панел и погледнете http заглавията, ще откриете, че Accept-Encoding в заглавките на заявката вече не е gzip, deflate, а допълнителен sdch. Станете gzip, deflate, sdch. Фигура:





Какво е SDCH?

Sdch е съкращението на Shared Dictionary Compression over HTTP, което компресира едно и също съдържание във всяка страница чрез алгоритъм за компресиране на речника, за да намали предаването на едно и също съдържание. Например, уебсайтът обикновено има обща глава и опашка и дори някои странични ленти са често срещани. По предишния начин тази обща информация трябва да се презареди, когато се отваря всяка страница, но ако се използва SDCH компресия, общото съдържание може да бъде предадено само веднъж.



Sdch е главно разделен на три части: първата заявка, речника за изтегляне и следващата заявка.

Този метод първоначално е подготвен за IE в Google Toolbar. Chrome вече се поддържа изцяло, но все още не съм намерил уебсайт.

SDCH и ajax + pushState

Методът за компресиране SDCH е да се намали предаването на същото съдържание. В същото време въведеният по-рано ajax + pushState също намалява предаването на същото съдържание и ефектът, който искат да постигнат, е същият. Само SDCH е от Google. Може да се поддържа от браузъра Chrome за известно време, но pushState е стандарт за HTML5. Той вече се поддържа от Chrome и Firefox и все повече браузъри ще го поддържат.



Лично мислете, че SDCH може да няма много развитие, но може да се проучи като нова посока и да се добави към стандарта в точното време, за да направи мрежовото предаване все по-бързо.

Препечатано на: https://www.cnblogs.com/stringboy/p/4244676.html