Kompresija iste datoteke svaki put
O sadržaju i njegovoj provjeri
U ovom članku
Apache komprimira odgovore u hodu. Za stranicu koja je svaki put drukčija to je jedina mogućnost. Za stilsku tablicu koja se mijenja jednom mjesečno to znači da poslužitelj tjednima ponavlja isti posao za svakog posjetitelja i svaki put odbacuje rezultat. Za to nema predmemorije.
Izmjereno 19. kolovoza 2026. preko postojeće veze, s vlastitom datotekom ovog web-mjesta style.css (124 kB) i world.js (102 kB):
| trajanje | bajtovi | |
| bez kompresije | 2,9 ms | 124,755 |
| gzip, u hodu | 18,1 ms | 34,995 |
| brotli, u hodu | 14,5 ms | 32,685 |
| world.js, gzip | 47,9 ms | 38,283 |
| world.js, brotli | 15,9 ms | 38,086 |
Četrdeset osam milisekundi procesorskog vremena, po zahtjevu, za stvaranje rezultata identičnog bajt po bajt. Na malom poslužitelju to nije pogreška zaokruživanja.
Komprimirati jednom, na disku
Korak izgradnje zapisuje komprimiranu datoteku pokraj izvornika, a pravilo prepisivanja isporučuje je kada preglednik navede da prihvaća gzip. Isporuka gotove datoteke košta jednako kao isporuka bilo koje datoteke.
gzip umjesto brotlija, iz dosadnog razloga: na ovom stroju nije instaliran izvršni program brotli. Datoteke su otprilike 7 % veće nego što bi bile uz brotli, a vrijeme poslužitelja petina je troška brotlija u hodu. Taj je kompromis vrijedilo prihvatiti sada umjesto čekanja na ljepši odgovor.
Verzija ide u naziv datoteke
Izgradnja zapisuje style.css.<mtime>.gz, a ?v= u označnom kodu isto je to vrijeme izmjene. Prepisivanje se aktivira samo kada postoji datoteka s odgovarajućim brojem.
Takav raspored ima svojstvo koje vrijedi namjerno predvidjeti: ako se stilska tablica promijeni, a ponovna izgradnja zaboravi, broj u označnom kodu upućuje na datoteku koja ne postoji, prepisivanje se ne aktivira i Apache normalno isporučuje izvornik. Najgori je slučaj izostanak ubrzanja. Zastarjela stilska tablica ne može se isporučiti. Svaki sustav predmemoriranja trebalo bi provjeriti tim pitanjem — kada nešto pođe po zlu, postaje li sporo ili pogrešno?
Pogreška usred svega
Datoteka koja se isporučuje već je gzip, pa se pri isporuci ne smije ponovno komprimirati. Konfiguracija je prvotno postavljala no-gzip, što zaustavlja jedan od dvaju kompresora poslužitelja Apache. Drugi, mod_brotli, bez problema je komprimirao gotovu gzip datoteku brotlijem dok je zaglavlje odgovora i dalje navodilo gzip.
Preglednici su dobivali nečitljiv sadržaj. To nije otkriveno gledanjem stranice — otkriveno je zbrajanjem bajtova i pronalaskom broja koji nije imao smisla. Potrebni su i no-gzip i no-brotli – a samo je jedan od njih očit.