Komprimovanie rovnakého súboru pri každej požiadavke
V tomto článku
Apache komprimuje odpovede za behu. Pre stránku, ktorá je zakaždým iná, je to jediná možnosť. Pri štýlopise, ktorý sa mení raz za mesiac, to znamená, že server celé týždne vykonáva tú istú prácu pre každého návštevníka a výsledok zakaždým zahodí. Neexistuje preň vyrovnávacia pamäť.
Zmerané 19. augusta 2026 cez existujúce spojenie s vlastnými súbormi tohto webu style.css (124 kB) a world.js (102 kB):
| čas | bajty | |
| bez kompresie | 2,9 ms | 124 755 |
| gzip za behu | 18,1 ms | 34 995 |
| brotli za behu | 14,5 ms | 32 685 |
| world.js, gzip | 47,9 ms | 38 283 |
| world.js, brotli | 15,9 ms | 38 086 |
Štyridsaťosem milisekúnd procesora na požiadavku na vytvorenie výsledku totožného bajt po bajte. Na malom serveri to nie je zaokrúhľovacia chyba.
Komprimujte raz na disk
Krok zostavenia zapíše komprimovaný súbor vedľa pôvodného a pravidlo prepisu ho poskytne, keď prehliadač oznámi podporu gzip. Poskytnutie hotového súboru stojí toľko ako poskytnutie ľubovoľného súboru.
gzip namiesto brotli z nudného dôvodu: na tomto stroji nie je nainštalovaný spustiteľný súbor brotli. Súbory vychádzajú približne o 7 % väčšie, než by ich vytvoril brotli, a čas servera je pätinou nákladov brotli za behu. Tento kompromis sa oplatilo prijať teraz namiesto čakania na krajšiu odpoveď.
Verzia patrí do názvu súboru
Zostavenie zapisuje style.css.<mtime>.gz, pričom ?v= v značkovaní je ten istý čas zmeny. Prepis sa spustí iba vtedy, keď existuje súbor so zodpovedajúcim číslom.
Toto usporiadanie má vlastnosť, na ktorú sa oplatí myslieť zámerne pri návrhu: ak sa štýlopis zmení a zabudne sa na nové zostavenie, číslo v značkovaní odkazuje na neexistujúci súbor, prepis sa nespustí a Apache normálne poskytne originál. V najhoršom prípade chýba zrýchlenie. Zastaraný štýlopis sa nemôže doručiť. Každá schéma vyrovnávacej pamäte by sa mala overiť touto otázkou — keď sa pokazí, spomalí sa alebo začne dávať nesprávne výsledky?
Chyba uprostred toho
Poskytovaný súbor už je gzip, takže sa pri odosielaní nesmie komprimovať znova. Konfigurácia pôvodne nastavovala no-gzip, čo zastaví jeden z dvoch kompresorov servera Apache. Druhý, mod_brotli, veselo komprimoval hotový súbor gzip pomocou brotli, kým hlavička odpovede ďalej uvádzala gzip.
Prehliadače dostali nečitateľný obsah. Neodhalilo sa to pozeraním na stránku — odhalilo sa to sčítaním bajtov a nájdením čísla, ktoré nedávalo zmysel. Potrebné sú no-gzip aj no-brotli a iba jedno z nich je zjavné.