HTTP kompresija predstavlja sposobnost koja se može implementirati u web server i web klijent kako bi se bolje iskoristio dozvoljeni propusni opseg (eng. bandwight, prim. aut.) i omogućila veća brzina prenosa podataka između njih.
HTTP podaci se kompresuju pre početka slanja sa servera: internet pretraživač objavljuje serveru koje metode kompresije podržava pre nego što preuzme odgovarajući format; pretraživači koji ne podržavaju odgovarajuće metode kompresije će preuzeti nekompresovane podatke. Najčešća shema za kompresiju podrazumeva gzip i deflate, dok celu listu dostupnih shema održava IANA (Internet Assigned Numbers Authority), Section 3.5: "The Internet Assigned Numbers Authority (IANA) acts as a registry for content-coding value tokens.". Pored toga, drugi developeri prave nove metode kompresije i uključuju ih u svoje proizvode (npr. Google je napravio SDCH shemu i implementirao je u svoj Google Chrome pretraživač i još neke Google servere).
Klijent/Server shema za kompresiju
U većini slučajeva, ne računajući SDHC, saradnja se odvija u dva koraka, što je opisano u . Web klijent ukljucuje "Accept-Encoding" polje u svoj HTTP zahtev, u kome se nalaze imena podržanih shema za kompresiju (tzv. content-coding tokens)odvojenih zapetama.
GET /encrypted-area HTTP/1.1 Host: www.example.com Accept-Encoding: gzip, deflate Ako server podržava jednu ili više shema za kompresiju, podaci koji se šalju mogu se kompresovati pomoću jedne ili više metoda koje podržavaju obe strane. U tom slučaju, server će dodati "Content-Encoding" polje u svom HTTP odgovoru u kome će stajati imena korisćenih shema, odvojenih zapetama.
HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.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
Web server nije u obavezi da koristi bilo koji metod kompresije - to zavisi od unutrašnjih podešavanja samog servera a može zavisiti i od unutrašnje arhitekture internet stranice o kojoj se radi.
U slučaju SDCH koristi se saradnja uz pomoć rečnika, što može uključiti i dodatne korake, kao na primer download potrebnog rečnika sa spoljnog servera.
Problemi koji sprečavaju upotrbu HTTP kompresije
Clanak koji su 2009. godine objavili inženjeri Google- a Arvind Jain i Jason Glasgov navodi da se više od 99 godina izgubi svakog dana zbog povećanog vremena učitavanja stranice kada sadržaj koji korisnici prihvataju nije kompresovan. Ovo se dešava kada se anti- virus umeša u konekciju i onemogućava kompresiju, kada se koriste proksi serveri (kod preopreznih pretraživača), kada su serveri pogrešno konfigurisani i kada bagovi u pretraživaču onemogučavaju kompresiju. Internet Explorer 6, koji koristi HTTP 1.0 (bez dodataka kao što su HTTP kompresija ili pipelining), kada se koristi sa proksijem -uobičajena konfiguracija u korporativnom okruženju- bio je glavni krivac za korišćenje nekompresovanog HTTP-a.Optimizing encoding and transfer size of text-based assets | Web Fundamentals - Google Developers
Content-coding tokens
compress - UNIX "compress" metod za kompresiju deflate - zlib kompresija () bi trebalo da se koristi (u kombinaciji sa deflate kompresijom ()) kao što je opisano u . Međutim, implementacija u praksi varira između zlib kompresije i čiste deflate kompresije. Zbog toga se gzip pokazao kao pouzdaniji metod od martu 2011. exi - W3C XML format za kompresiju gzip - GNU zip format (opisan u ). Ovaj metod je najpodržaniji od marta 2011. identity - Nije potrebna nikakva transformacija. Ovo je podrazumevana vrednost za kodiranje sadržaja. pack200-gzip - Format za Java ArhiveJSR 200: Network Transfer Format for Java Archives. SDCH - Google-ov metod za kompresiju (Shared Dictionary Compression for HTTP) bzip2 - besplatan i open source algoritam za kompresovanje sadržaja bez gubitaka. PeerDist - Majkrosoftov metod za keširanje i vraćanje sadržaja (opisan u MS-PCCRPT)
Serveri koji podržavaju HTTP kompresiju SAP NetWeaver Microsoft IIS: ugrađen ili koristi nezavisni modul Apache HTTP Server, preko mod_deflate (nasuprot imenu trenutno podržava samo gzipBug 53121 – Confusing documentation, gzip and deflate) ili mod_gzip Cherokee HTTP server - gzip i deflate kompresije Hiawatha HTTP server Oracle iPlanet Web Server Zeus Web Server lighttpd - preko mod_compress i novijeg mod_deflate (1.5.x) nginx - ugradjen Aplikacije zasnovane na Tornado web serveru - ako je "gzip" polje postavljeno na True u podešavanjima aplikacije Jetty web server GeoServer Apache Tomcat IBM Websphere
Kompresija HTTP-a može se postići i korišćenjem jezika za serversko skriptovanje kao što su PHP ili programskih jezika kao sto je Java.
Reference
Spoljašnje veze : Hypertext Transfer Protocol - HTTP/1.1 HTTP Content-Coding Values by Internet Assigned Numbers Authority Apache: mod_deflate & mod_gzip Compression with lighttpd Coding Horror: HTTP Compression on IIS 6.0 HTTP Compression: resource page by the founder of VIGOS AG, Constantin Rack Using HTTP Compression by Martin Brown of Server Watch Using HTTP Compression in PHP check http compression Dynamic and static HTTP compression with Apache httpd Browser HTTP Compression Test
Категорија:Развој интернет софтвера Категорија:HTTP Категорија:Веб развој
de:Hypertext Transfer Protocol#HTTP-Kompression