Daily Archives: 2010.01.4. 20:55

ETags kontra webfarm

Ki látott már olyat, hogy miután új webszerver kerül egy farmba megnő a hálózati forgalom, sőt meghal a böngésző cache? Pedig IIS 7 előtt ez történik.

A böngésző cache elsősorban úgy működik, hogy az első lekérdezéskor a szerver visszaküldi az adott erőforrás (kép, oldal stb.) utolsó módosításának dátumát a Last-Modified fejléc mezőben, amit a böngésző az ismételt lekérdezéskor egy If-Modified-Since fejléc mezőben visszaküld a szervernek. A kiszolgáló csak akkor küldi le a teljes fájlt a kliensnek, ha a fájl frissebb, egyébként HTTP 304 Not Modified választ küld body nélkül.

Csakhogy utazik egy másik pár fejléc mező is, az ún. entity tag, azaz ETag. Az IIS valami ilyesmit küld vissza:

ETag: "0ba4e9b5277c71:5897"

A következő kérésnél pedig ezt az értéket így küldi vissza a kliens:

If-None-Match: "0ba4e9b5277c71:5897"

A válasz a dátumos megoldáshoz hasonlóan egyezés esetén 304, eltérés esetén 200 + az új tartalom. Az ETag mező tartalmára a HTTP 2616 Section 3.11 szerint gyakorlatilag csak annyi megkötés van, hogy egy idézőjelek közé zárt egyedi értéket tartalmazzon. IIS esetén ez FileTimeStamp:ChangeNumber értékekből áll, Apache esetén más formátumú a tartalom: inode-size-timestamp, például:

ETag: "ef15-424-eda08740"

Mindkét esetben az a probléma, hogy a ChangeNumber és az inode részeket a fájlrendszer tartja nyilván és az értékük gépről gépre jó eséllyel eltérő. Azaz ha csak egyetlen webkiszolgálónk van, akkor semmi probléma, amikor azonban egy NLBS farmot építünk és beteszünk egy második kiszolgálót, azon szinte biztos, hogy eltérő lesz a ChangeNumber és az inode érték. Következésképp míg egy kiszolgáló esetén a böngésző lelkesen a saját gyorsítótárából töltötte a tartalmat, a második szerver üzembe állítása után – ha a két kérés más szerverre esik be, akkor  – kénytelen letölteni a fájlt, hiába azonos mindkét szerveren. A végeredmény nagyobb hálózati forgalom és lassabb renderelés még akkor is, ha van If-Modified-Since fejléc, ugyanis az If-None-Match elsőbbséget élvez.

A megoldás nyilván az, hogy meg kell szabadulni a gépfüggő részektől:

  • IIS 5 (ugye már senki nem használ ilyet?!) esetén az mdutil.exe-vel lehet szinkronizálni az ETag értékeket, ld. KB 922733.
  • IIS 6 esetén be lehet állítani egy fix ChangeNumber értéket, ld. KB 922703. Itt előfordult néhány bug, érdemes megnézni a 823544 és a 900245 KB cikkeket is.
  • Apache esetén a FileETag direktíván keresztül lehet beállítani, hogy az ETag fejléc milyen fájl tulajdonságok alapján képződjön, ld. Apache Core Features.

A jó hír az, hogy IIS 7 esetén ezzel egyáltalán nem kell foglalkozni, ugyanis a ChangeNumber elveszítette jelentőségét, az értéke mindig fixen 0. Vegyes farm esetén a fenti módszerekkel ezt a 0 értéket kell IIS 6-on is beállítani. HTTP 1.1 esetén az elvárt viselkedés az, hogy a szerver küld ETag és Last-Modified fejléceket is, tehát teljesen nem célszerű megszabadulni tőle.

Összefoglalva tehát egy gép esetén nincs gond, több gépes farm esetén IIS 7 előtt figyeljünk oda erre a fejléc mezőre.

Technorati-címkék: ,,

Windows 7: GodMode, ISO edition switcher, azonos ISO minden editionhöz

Külföldi weblapokon olvasgatva futottam bele néhány érdekességbe a Windows 7-tel és a telepítőjével kapcsolatban.

GodMode – minden beállítás egy helyen

Csak hozzunk létre egy új mappát, aminek legyen ez a neve (így, GUIDostul):

GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

Így fog kinézni:

Win7 GodMode icon

Ha pedig belekattintunk, kapunk 276 parancsikont csoportokba rendezve:

Win7 GodMode mappa Lehet köztük olyanokat találni, amibe még máshol nem futottunk bele.

Aki tudja, honnan jön a GUID vagy van más hasonló mappa, írja meg!

Forrás: http://windows7themes.net/windows-7-enable-secret-godmode.html

Windows 7 ISO Image Edition Switcher

Nem tudom, ki hogy van vele, engem zavar, hogy a különböző Windows 7 változatokhoz más telepítő lemezkép (ISO) tartozik. Ez főleg akkor kínos, ha van kéznél egy Enterprise ISO, de éppen csak Professional kellene, mert akkor le kell töltenünk még egy ISO-t, ami sokáig tarthat. Az alábbi kis alkalmazással úgy kapcsolhatjuk át a változatot az ISO-n belül, hogy még az SHA-1 hash is megegyezik azzal, amit az MSDN-ről vagy a TechNetről töltenénk le:

windows7_iso_image_edition_switcher.zip

Nem próbáltam ki, de még jól jöhet egyszer.

Windows 7 ei.cfg Removal Utility

A fentinél szebb megoldás (ezt sem próbáltam ki), ha a telepítő rákérdez, hogy melyik verziót akarjuk telepíteni (amihez természetesen a hozzá tartozó termékkulcsot meg kell adni). Személy szerint nekem ez a funkció nagyon hiányzik a telepítőből, aki közel van a tűzhöz mondja meg, hogy miért nincs benne. Ha minden igaz, akkor mindössze annyit kell tennünk, hogy a lemezképről törölnünk kell az ei.cfg fájlt, amit az alábbi kis alkalmazás egy pillanat alatt meg is tesz:

eicfg_removal_utility.zip

Ráadásul mindez visszafordítható, mert csak az UDF fájlrendszer deletion bitjét állítja át.

Forrás: http://lifehacker.com/5438005/eicfg-removal-utility-lets-you-use-any-product-key-with-your-windows-7-disc

Akinek PhD-ja van licenszelésből, megmondhatná, hogy ez mennyire sérti a licenszet 🙂

 

Technorati-címkék: ,,