“Guglizzad meg, gyermekem” – tanították a nagyok, és én, mint jó diák, így is teszek mindig. Olykor azonban szembesülni kell a zsákutcákkal, amiket az internet sötét démonai építenek nekünk, mint például a Microsoft. Álljon itt egy terképrészlet az útvesztőben rekedteknek.
Történt ugyanis, hogy az IIS 6-ot be akartam állítani, hogy a kimenetét GZippel vagy Deflate-tel tömörítve külje annak a kliensnek, amelyik ezt szereti (a Deflate gyorsabb egyébként). Alapvetően Apache+Linux párti vagyok, ezért nem ismertem pontosan a beállítás módját, hát rákerestem. Kaptam is rögtön pár jól kinéző találatot:
Az első rendben is van. A másiknál több furcsaság is felmerül. Itt megadhatjuk, hogy az alapértelmezett .html, .htm és .txt fájlok mellett még milyeneket tömörítsen. Először is: kiterjesztések? WTF? Mennyivel értelmesebb lenne Content-Type-ra szűrni! Másodszor: külön kell statikus és dinamikus tartalmakra beállítani a kiterjesztéseket. Ismét csak WTF??? De nem baj, ez biztos olyan IIS logika, amit én nem érthetek.
Szépen elvégeztem hát az (eredeti microsoftos-technetes!) leírásban leírt teendőket, újraindítottam a webszervert és vártam a gyönyörűszép Content-Encoding response headert. De az csak nem jött.
Beletelt némi időbe, mire kiderítettem, hogy mi a baja. Szóval most mindenkivel megosztom a HELYES módját a beállításnak, ugyanis a technetes leírás ROSSZ. A slusszpoén az, hogy a tömörítendő kiterjesztések listájának elemeit nem szóközzel kell elválasztani, mint ahogy a tutorial írja, hanem CR+LF-fel, ami ugye parancssorból eleve lehetetlen. Így a következőket kell tennünk:
- Nyomjuk Windows+R-t (Run/Futtatás)
- Írjuk be, hogy cmd (Command Prompt)
- Írjuk a parancssorba, hogy issreset /stop, majd enter – ez ideiglenesen lelövi az IIS-t, amíg a konfigot szerkesztjük
- Nyissuk meg a %systemroot%\system32\inetsrv könyvtárat, és keressük meg a MetaBase.xml-t – ez tárolja az IIS konfigurációját.
- A fájlt texteditorral megnyitva keressük meg a IIsCompressionScheme nevű tageket, melyek a tömörítéstípusok beállításait tartalmazzák, és szerkesszük őket úgy, hogy valahogy így nézzenek ki (vegyük észre a CRLF-eket a HcFileExtensions és HcScriptFileExtensions attribútumban):
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" HcCompressionDll="%windir%\system32\inetsrv\gzip.dll" HcCreateFlags="1" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="TRUE" HcDynamicCompressionLevel="3" HcFileExtensions="html html css js wsdl" HcOnDemandCompLevel="10" HcPriority="1" HcScriptFileExtensions="asp dll exe xml asmx aspx wsdl" > </IIsCompressionScheme>
- A IIsCompressionSchemes tag többi, általános beállítást tartalmazza, nézzük át ezeket is!
- Mentés, és issreset /start a Command Prompt-ban
Nagyjából ennyi. Ha a kliensünk rendes Accept-Encoding: gzip, deflate headerrel küldi a requestet, akkor csodaszép tömörített válaszokat kell, hogy kapjunk, amivel átlagban a sávszél 75%-át is megspróroljuk.
Cuppantás.



A 

