Destekle iletişim

E-postayla, genellikle iki gün içinde yanıt veririz.

Google reCAPTCHA, kötüye kullanıma karşı bu gönderimi denetler; bu sırada veriler Google'a aktarılır. Komut dosyası yalnızca bu form açıldığında yüklenir.

← Tüm yazılar

Aynı dosyayı her seferinde yeniden sıkıştırmak

Apache yanıtları anında sıkıştırır. Her seferinde farklı olan bir sayfa için tek seçenek budur. Ayda bir değişen bir stil dosyası içinse bu, sunucunun haftalarca her ziyaretçi için aynı işi yeniden yapması ve sonucu her seferinde çöpe atması demektir. Bunun için bir önbellek yoktur.

19 Ağustos 2026'da, zaten açık bir bağlantı üzerinden, bu sitenin kendi style.css (124 kB) ve world.js (102 kB) dosyalarıyla ölçüldü:

sürebayt
sıkıştırmasız2,9 ms124.755
gzip, anında18,1 ms34.995
brotli, anında14,5 ms32.685
world.js, gzip47,9 ms38.283
world.js, brotli15,9 ms38.086
sıkıştırmasız2,9 msgzip18,1 msbrotli14,5 msworld.js gzip47,9 msworld.js brotli15,9 ms

Bayt bayt aynı bir sonuç üretmek için her istekte kırk sekiz milisaniyelik işlemci zamanı. Küçük bir sunucuda bu, yuvarlama hatası sayılmaz.

Bir kez sıkıştırıp diskte tutmak

Bir derleme adımı sıkıştırılmış dosyayı özgün dosyanın yanına yazar; tarayıcı gzip kabul ettiğini bildirdiğinde bir yeniden yazma kuralı bu dosyayı sunar. Hazır bir dosyayı sunmanın maliyeti, herhangi bir dosyayı sunmanın maliyeti kadardır.

Brotli yerine gzip, sıkıcı bir nedenle: bu makinede kurulu bir brotli programı yok. Dosyalar brotli ile olacağından yaklaşık %7 daha büyük çıkıyor, sunucu süresi ise anında brotli sıkıştırmasının beşte biri kadar. Daha güzel bir çözümü beklemek yerine bu ödünleşimi şimdi kabul etmeye değerdi.

Sürüm dosya adına yazılır

Derleme adımı dosyayı şu adla yazar: style.css.<mtime>.gz; HTML'deki ?v= değeri de aynı değişiklik zamanıdır. Yeniden yazma kuralı yalnızca numarası eşleşen bir dosya varsa devreye girer.

Bu düzenin, bilerek tasarlanmaya değer bir özelliği var: stil dosyası değişir ve yeniden derleme unutulursa, HTML'deki numara var olmayan bir dosyayı gösterir, yeniden yazma kuralı devreye girmez ve Apache özgün dosyayı normal şekilde sunar. En kötü ihtimalle hızlanma eksik kalır. Eskimiş bir stil dosyasının sunulması mümkün değildir. Her önbellekleme düzeni şu soruyla sınanmalıdır — bir şey ters gittiğinde yavaşlıyor mu, yoksa yanlış mı oluyor?

İşin ortasındaki hata

Sunulan dosya zaten gzip biçiminde, bu yüzden çıkışta yeniden sıkıştırılmamalı. Yapılandırma başta şu ayarı yapıyordu: no-gzip, bu da Apache'nin iki sıkıştırıcısından birini durdurur. Diğeri, mod_brotli, hazır gzip dosyasını gönül rahatlığıyla bir de brotli ile sıkıştırdı; yanıt başlığı ise hâlâ şunu söylüyordu: gzip.

Tarayıcılar okunamayan içerik aldı. Hata sayfaya bakılarak yakalanmadı — baytlar toplanıp anlamsız bir sayı bulununca yakalandı. Hem no-gzip hem de no-brotli gereklidir ve bunlardan yalnızca biri insanın hemen aklına gelir.

Reklam