Írjon a támogatásnak

E-mailben válaszolunk, általában két napon belül.

A Google reCAPTCHA visszaélés elleni védelemként ellenőrzi ezt a beküldést; ennek során adatok jutnak el a Google-hoz. A szkript csak az űrlap megnyitásakor töltődik be.

← Összes bejegyzés

Ugyanazon fájl tömörítése újra és újra

Az Apache menet közben tömöríti a válaszokat. Egy minden alkalommal más oldalnál ez az egyetlen lehetőség. Egy havonta egyszer változó stíluslapnál viszont azt jelenti, hogy a szerver heteken át minden látogatónál újra elvégzi ugyanazt a munkát, és az eredményt minden alkalommal eldobja. Nincs hozzá gyorsítótár.

Mérés 2026. augusztus 19-én, meglévő kapcsolaton, a weboldal saját style.css (124 kB) és world.js (102 kB) fájljaival:

időbájt
tömörítés nélkül2,9 ms124 755
gzip, menet közben18,1 ms34 995
brotli, menet közben14,5 ms32 685
world.js, gzip47,9 ms38 283
world.js, brotli15,9 ms38 086
tömörítés nélkül2,9 msgzip18,1 msbrotli14,5 msworld.js gzip47,9 msworld.js brotli15,9 ms

Kérésenként negyvennyolc milliszekundum processzoridő egy bájtra pontosan azonos eredményért. Egy kis szerveren ez nem kerekítési hiba.

Egyszeri tömörítés, a lemezen

Egy build-lépés az eredeti mellé írja a tömörített fájlt, egy átírási szabály pedig azt szolgálja ki, ha a böngésző jelzi, hogy elfogadja a gzipet. Egy kész fájl kiszolgálása annyiba kerül, amennyibe bármely más fájlé.

Brotli helyett gzip, egy unalmas okból: ezen a gépen nincs telepítve brotli program. A fájlok nagyjából 7%-kal nagyobbak, mint amekkorára a brotli tömörítené őket, a szerveridő pedig az ötöde annak, amennyibe a menet közbeni brotli kerül. Ezt a kompromisszumot érdemes volt most megkötni, ahelyett hogy egy szebb megoldásra várnánk.

A verzió a fájlnévbe kerül

A build ezt a fájlt írja ki: style.css.<mtime>.gz, a jelölésben szereplő ?v= pedig ugyanez a módosítási idő. Az átírás csak akkor lép életbe, ha létezik a megfelelő számot viselő fájl.

Ennek az elrendezésnek van egy tulajdonsága, amelyre érdemes szándékosan tervezni: ha a stíluslap megváltozik, és az újraépítés elmarad, a jelölésben lévő szám egy nem létező fájlra mutat, az átírás nem lép életbe, és az Apache a szokásos módon kiszolgálja az eredetit. A legrosszabb eset, hogy elmarad a gyorsulás. Elavult stíluslap nem kerülhet ki. Minden gyorsítótárazási megoldást érdemes ezzel a kérdéssel ellenőrizni — ha valami elromlik, lassú lesz, vagy hibás?

A hiba, amely közben előjött

A kiszolgált fájl már gzip, így kifelé menet nem szabad újra tömöríteni. A konfiguráció eredetileg ezt állította be: no-gzip, ami az Apache két tömörítője közül az egyiket leállítja. A másik, a mod_brotli, vidáman brotlival tömörítette a kész gzip-fájlt, miközben a válasz fejléce továbbra is ezt mondta: gzip.

A böngészők olvashatatlan tartalmat kaptak. Nem az oldal megnézésekor derült ki — hanem akkor, amikor valaki összeadta a bájtokat, és értelmetlen számot kapott. A no-gzip és a no-brotli beállításra egyaránt szükség van, és közülük csak az egyik kézenfekvő.

Hirdetés