Komprese HTTP

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Komprese HTTP je v [url= žádost o data zhruba tak, že do požadavku vloží hlavičku Accept-encoding, do které zapíše podporované kompresní algoritmy, a následně dostane odpověď s daty zkomprimovanými jedním z těchto algoritmů. Nekompatibilní prohlížeč by nebyl schopen přijatá zkomprimovaná data rozbalit, takže by bylo zbytečné žádat o komprimovaná data. Současné nejběžnější komprimační algoritmy jsou [[gzip]url= komprese. Pokud byl [[Internet Explorer#Verze 6|Internet Explorer 6][Informatika|informatice]] vestavěná vlastnost webových serverů a prohlížečů umožňující lépe využít dostupný datový tok a zároveň zajistit rychlejší přenosové rychlosti mezi serverem a klientem. Data přenášená přes protokol HTTP jsou komprimována ještě před odesláním klientovi; kompatibilní prohlížeč podá[/url]] a deflate (abstraktní knihovna využívající deflate je například zlib), ačkoli kompletní seznam dostupných algoritmů je udržován IANA. Kromě toho třetí strany vyvíjejí nové kompresní metody a vkládají je do jejich softwarových produktů (například Google SDCH systém je implementován ve vyhledávači Google Chrome, který ho využívá při komunikaci s určitým okruhem serverů Google).

V roce 2009 vyšel od inženýrů Google Arvinda Jaina a Jasona Glasgowa článek, ve kterém spočítali časové ztráty v případě, že by se kompresní metody nepoužívaly. Součet promarněného času všech uživatelů internetu za jeden den by v takové situaci převyšoval 99 let. +more K problémům s komprimovaným přenosem dochází také například v situacích, kdy antivirový software nutí prohlížeč přijímat nekomprimovaná data, kdy je použito připojení přes proxy a opatrné prohlížeče nepovolí kompresi, pokud jsou špatně nastavené servery, nebo pokud jsou v prohlížečích chyby zabraňující správnému běhu[/url]] za proxy (běžné nastavení v podnicích), byl nastaven tak, aby spadnul z technologie HTTP 1. 1 na HTTP 1. 0 (která prakticky neumožňuje kompresi a vůbec zřetězování). Díky těmto skutečnostem byl IE6, ve své době nejpoužívanější prohlížeč, nejvíce náchylný na využívání nekomprimovaného HTTP.

Vyjednávání komprese

Ve většině případů, vyjma použití SDCH, se vyjednávání provede ve dvou krocích popsaných v RFC 2616:

1. HTTP žádost poslaná webovým klientem obsahuje řádek Accept-Encoding se jmény podporovaných kompresních schémat (pojmenovaných content-coding tokens) oddělených čárkami.

GET /encrypted-area HTTP/1.1 Host: www.example.com Accept-Encoding: gzip, deflate

2. Pokud server podporuje jedno nebo více z uvedených kompresních schémat, odchozí data mohou být komprimována jednou nebo více metodami podporovanými oběma stranami. +more V takovém případě server přidá řádek Content-Encoding do hlavičky HTTP odpovědi se seznamem použitých schémat oddělených čárkami.

HTTP/1. 1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1. +more3. 3. 7 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip.

Webový server není v žádném případě povinen použít jakoukoliv kompresní metodu. Použití kompresních metod závisí výhradně na vnitřním nastavení serveru a také může záviset na vnitřní architektuře žádaných webových stránek.

V případě použití SDCH je slovníkové vyjednávání také vyžadováno, může ovšem zahrnovat dodatečné kroky jako stažení přesného slovníku z externího serveru.

Hodnoty pro Content-coding

[url= * [[bzip2][compress]] - metoda používaná stejnojmenný un*xovým programem * deflate - Navzdory svému jménu by komprese zlib (RFC 1950) měla být použita (v kombinaci s deflate - RFC 1951) v souladu s RFC 2616. Ve skutečnosti se ale implementace mezi zlib a deflate odchyluje od dohodnutých pravidel. +more Díky těmto zmatkům se lidem podporujícím gzip podařilo přesvědčit internetovou komunitu, že gzip je spolehlivější výchozí metoda (březen 2011). * exi - W3C Efficient XML Interchange * gzip - GNU zip formát (popsán v RFC 1952). Tato metoda je v současnosti nejšířeji podporovaná (březen 2011). * identity - Žádná transformace dat. Toto je výchozí nastavení položky content coding. * pack200-gzip - Síťový transportní formát pro Java archivy. * SDCH - Google Shared Dictionary Compression for[/url]] - Freeware open source bezztrátový kompresní algoritmus. * peerdist - Microsoft Peer Content Caching and Retrieval (ukládání obsahu do vyrovnávací paměti a jeho znovunačtení, popsáno v [url=http://msdn. microsoft. com/en-us/library/dd304322%28v=PROT. 10%29. aspx]MS-PCCRPT[/url]).

Servery podporující HTTP kompresi

[url= Server]url= může být také dosaženo použitím funkcionality [[skriptovaní na serveru|jazyků podporujících skriptování na straně severu][Microsoft IIS]] - Vestavěný nebo používající moduly třetích stran. * [[Apache[/url]] - Prostřednictvím mod_deflate (navzdory svému jménu v současné době podporuje pouze gzip) nebo mod_gzip. +more * Sun Java System Web Server * Zeus Web Server * Lighttpd - Pomocí mod_compress a novější mod_deflate (1. 5. x). * Nginx - Vestavěná. * Geoserver.

Komprese[/url]], například PHP nebo Java.

Reference

Externí odkazy

[url=/1. 1 * [url=http://www. +moreiana. org/assignments/http-parameters]url= komprese na IIS 6. 0[/url]url= Komprese[/url]url= Komprese v PHP. [/url]url= komprese s Apache[/url]url=d. [/url][rfc:2616|RFC 2616]]: Hypertext Transfer Protocol -[/url]HTTP Content-Coding Values[/url] publikovala Internet Assigned Numbers Authority. * Apache: [url=http://httpd. apache. org/docs/2. 2/mod/mod_deflate. html]mod_deflate[/url] & [url=http://sourceforge. net/projects/mod-gzip/]mod_gzip[/url] * [url=http://trac. lighttpd. net/trac/wiki/Docs:ModCompress]Komprese s lighttpd[/url] * [url=http://www. codinghorror. com/blog/2004/08/http-compression-and-iis-6-0. html]Coding Horror:[/url] * [url=http://tomaserlich. cz/gzip-komprese-css-a-js/]Návod na kompresi přes mod_deflate[/url] * [url=http://www. serverwatch. com/tutorials/article. php/3514866]Použití[/url] podle Martina Browna z Server Watch. * [url=https://web. archive. org/web/20060411174003/http://www. devshed. com/c/a/PHP/Using-HTTP-Compression-in-PHP-Make-Your-Web-Pages-Load-Faster/]Použití[/url] * [url=https://web. archive. org/web/20120430023716/https://banu. com/blog/38/dynamic-and-static-http-compression-with-apache-httpd/]Dynamická a statická[/url].

Kategorie:Kompresní algoritmy Kategorie:HTTP

HTTP-Kompression

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top