Contactați asistența

Răspundem prin e-mail, de obicei în două zile.

Google reCAPTCHA verifică această trimitere împotriva abuzurilor; date sunt trimise către Google. Scriptul se încarcă doar când acest formular este deschis.

← Toate articolele

Comprimarea aceluiași fișier de fiecare dată

Apache comprimă răspunsurile din mers. Pentru o pagină care este de fiecare dată diferită, aceasta este singura opțiune. Pentru o foaie de stil care se schimbă o dată pe lună, înseamnă că serverul face aceeași muncă din nou pentru fiecare vizitator, săptămâni la rând, și aruncă rezultatul de fiecare dată. Nu există cache pentru asta.

Măsurat pe 19 august 2026, pe o conexiune existentă, cu fișierele proprii ale acestui site style.css (124 kB) și world.js (102 kB):

timpocteți
fără compresie2,9 ms124.755
gzip, din mers18,1 ms34.995
brotli, din mers14,5 ms32.685
world.js, gzip47,9 ms38.283
world.js, brotli15,9 ms38.086
fără compresie2,9 msgzip18,1 msbrotli14,5 msworld.js gzip47,9 msworld.js brotli15,9 ms

Patruzeci și opt de milisecunde de CPU, per cerere, pentru a produce un rezultat identic octet cu octet. Pe un server mic, asta nu este o eroare de rotunjire.

Comprimare o singură dată, pe disc

Un pas de build scrie fișierul comprimat lângă original, iar o regulă de rescriere îl servește când browserul anunță că acceptă gzip. Servirea unui fișier gata făcut costă cât servirea oricărui fișier.

gzip și nu brotli, dintr-un motiv banal: pe această mașină nu este instalat niciun executabil brotli. Fișierele ies cu aproximativ 7 % mai mari decât le-ar face brotli, iar timpul de server este o cincime din cât costă brotli din mers. Merita acceptat acest compromis acum, în loc să așteptăm un răspuns mai elegant.

Versiunea intră în numele fișierului

Build-ul scrie style.css.<mtime>.gz, iar ?v= din marcaj este exact același moment al modificării. Rescrierea se aplică doar când există un fișier cu numărul corespunzător.

Acest aranjament are o proprietate care merită urmărită în mod deliberat la proiectare: dacă foaia de stil se schimbă și refacerea build-ului este uitată, numărul din marcaj indică un fișier care nu există, rescrierea nu se aplică, iar Apache servește în mod normal originalul. În cel mai rău caz lipsește accelerarea. O foaie de stil învechită nu poate ajunge la vizitator. Orice schemă de cache ar trebui verificată cu această întrebare — când ceva merge prost, devine lentă sau devine greșită?

Eroarea din mijlocul poveștii

Fișierul servit este deja gzip, deci nu trebuie comprimat din nou la ieșire. Configurația seta inițial no-gzip, care oprește unul dintre cele două compresoare ale Apache. Celălalt, mod_brotli, a comprimat voios cu brotli fișierul gzip gata făcut, în timp ce antetul răspunsului continua să spună gzip.

Browserele au primit conținut ilizibil. Problema nu a fost observată privind pagina — a fost prinsă adunând octeții și găsind un număr care nu avea sens. Este nevoie de no-gzip și de no-brotli deopotrivă, dar doar una dintre ele este cea evidentă.

Publicitate