Sama faili pakkimine iga kord
Sisust ja selle ülevaatamisest
Selles artiklis
Apache pakib vastuseid käigult. Lehe puhul, mis on iga kord erinev, on see ainus võimalus. Stiililehe puhul, mis muutub kord kuus, tähendab see, et server teeb sama töö iga külastaja jaoks uuesti, nädalate kaupa, ja viskab tulemuse iga kord minema. Selle jaoks pole vahemälu.
Mõõdetud 19. augustil 2026 olemasoleva ühenduse kaudu, selle saidi enda style.css (124 kB) ja world.js (102 kB) failidega:
| aeg | baiti | |
| ilma pakkimiseta | 2,9 ms | 124 755 |
| gzip, käigult | 18,1 ms | 34 995 |
| brotli, käigult | 14,5 ms | 32 685 |
| world.js, gzip | 47,9 ms | 38 283 |
| world.js, brotli | 15,9 ms | 38 086 |
Nelikümmend kaheksa millisekundit protsessoriaega päringu kohta, et saada bait baidi haaval identne tulemus. Väikesel serveril ei ole see ümardusviga.
Pakkimine üks kord, kettal
Ehitusetapp kirjutab pakitud faili originaali kõrvale ja ümberkirjutusreegel serveerib seda, kui brauser ütleb, et aktsepteerib gzipi. Valmis faili serveerimine maksab sama palju kui mis tahes faili serveerimine.
gzip, mitte brotli, igava põhjuse tõttu: sellel masinal pole brotli binaarfaili paigaldatud. Failid tulevad umbes 7 % suuremad kui brotliga ja serveriaeg on viiendik sellest, mis maksab käigult brotli. See kompromiss oli väärt kohe tegemist, mitte ilusama vastuse ootamist.
Versioon on failinimes
Ehitus kirjutab style.css.<mtime>.gz, ja ?v= märgistuses on see sama muutmisaeg. Ümberkirjutus käivitub ainult siis, kui vastava numbriga fail on olemas.
Sellel korraldusel on omadus, mida tasub tahtlikult kavandada: kui stiilileht muutub ja uuesti ehitamine unustatakse, osutab märgistuse number olematule failile, ümberkirjutus ei käivitu ja Apache serveerib originaali tavapäraselt. Halvim juhtum on, et kiirendus puudub. Aegunud stiililehte välja ei tule. Iga vahemäluskeemi tuleks selle küsimuse vastu kontrollida — kui see läheb valesti, kas see muutub aeglaseks või valeks?
Viga selle keskel
Serveeritav fail on juba gzip, seega seda ei tohi väljamineku teel uuesti pakkida. Konfiguratsioon seadis algselt no-gzip, mis peatab ühe Apache kahest pakkijast. Teine, mod_brotli, pakkis valmis gzip-faili rõõmsalt brotliga, samal ajal kui vastuse päis väitis endiselt gzip.
Brauserid said loetamatu sisu. Seda ei märgatud lehte vaadates — see märgati baite kokku liites ja leides arvu, mis ei andnud mõtet. Mõlemad no-gzip ja no-brotli on vajalikud ja ainult üks neist on ilmselge.