HTTP kompresija
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.[1]
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)[2]. 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 RFC 2616.
- 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[3] 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.[4]
Content-coding tokens
- compress - UNIX "compress" metod za kompresiju
- deflate - zlib kompresija (RFC 1950) bi trebalo da se koristi (u kombinaciji sa deflate kompresijom (RFC 1951)) kao što je opisano u RFC 2616. Međutim, implementacija u praksi varira između zlib kompresije i čiste deflate kompresije.[5][6] Zbog toga se gzip pokazao kao pouzdaniji metod od martu 2011.
- exi - W3C XML format za kompresiju
- gzip - GNU zip format (opisan u RFC 1952). Ovaj metod je najpodržaniji od marta 2011.[7]
- identity - Nije potrebna nikakva transformacija. Ovo je podrazumevana vrednost za kodiranje sadržaja.
pack200-gzip - Format za Java Arhive[8]
- 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 gzip[5][9]) ili mod_gzip
- Cherokee HTTP server - gzip i deflate kompresije
- Hiawatha HTTP server[10]
- 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
- ^ „Using HTTP Compression (IIS 6.0)”. Microsoft Corporation. Архивирано из оригинала 14. 12. 2011. г. Приступљено 9. 2. 2010.
- ^ RFC 2616, Section 3.5: "The Internet Assigned Numbers Authority (IANA) acts as a registry for content-coding value tokens."
- ^ „Use compression to make the web faster”. Google Developers. Приступљено 22. 5. 2013.
- ^ Optimizing encoding and transfer size of text-based assets | Web Fundamentals - Google Developers
- ^ а б „Compression Tests”. Verve Studios, Co. Архивирано из оригинала 02. 01. 2015. г. Приступљено 19. 7. 2012.
- ^ „Frequently Asked Questions about zlib - What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?”. Greg Roelofs, Jean-loup Gailly and Mark Adler. Архивирано из оригинала 26. 02. 2011. г. Приступљено 23. 3. 2011.
- ^ „Compression Tests: Results”. Verve Studios, Co. Архивирано из оригинала 21. 03. 2012. г. Приступљено 19. 7. 2012.
- ^ JSR 200: Network Transfer Format for Java Archives.
- ^ Bug 53121 – Confusing documentation, gzip and deflate
- ^ „Extra part of Hiawatha webserver's manual”. Архивирано из оригинала 22. 03. 2016. г. Приступљено 22. 05. 2013.
Spoljašnje veze
- RFC 2616: 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 Архивирано на веб-сајту Wayback Machine (6. фебруар 2014)
- HTTP Compression: resource page by the founder of VIGOS AG, Constantin Rack
- Using HTTP Compression Архивирано на веб-сајту Wayback Machine (14. март 2016) by Martin Brown of Server Watch
- Using HTTP Compression in PHP Архивирано на веб-сајту Wayback Machine (11. април 2006)
- check http compression
- Dynamic and static HTTP compression with Apache httpd
- Browser HTTP Compression Test
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.