Kontaktovať podporu

Odpovedáme e-mailom, zvyčajne do dvoch dní.

Google reCAPTCHA kontroluje toto podanie na ochranu pred zneužitím; údaje sa prenášajú spoločnosti Google. Skript sa načíta až pri otvorení tohto formulára.

← Všetky príspevky

Komprimovanie rovnakého súboru pri každej požiadavke

O obsahu a jeho overovaní

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):

časbajty
bez kompresie2,9 ms124 755
gzip za behu18,1 ms34 995
brotli za behu14,5 ms32 685
world.js, gzip47,9 ms38 283
world.js, brotli15,9 ms38 086
bez kompresie2,9 msgzip18,1 msbrotli14,5 msworld.js gzip47,9 msworld.js brotli15,9 ms

Š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é.

Reklama