- Konu sahibi
- #1
Apache sunucuda metin tabanlı dosyaları Gzip ile sıkıştırmak için sitenin ilgili dizinindeki
Ön koşul olarak Apache üzerinde
Örnek test (Linux/macOS gibi POSIX kabukta /dev/null kullanılır):
Başarılı sonuçta yanıt başlıkları arasında
Gzip özellikle metin içeriğinde tekrar eden karakterleri azaltır. Görsel, video, arşiv ve çoğu yazı tipi dosyası zaten sıkıştırılmış olduğundan bunları tekrar Gzip yapmak genellikle gereksiz işlem yükü oluşturur.
Değişiklikten sonra 500 hatası oluşursa hatanın nedeni çoğunlukla desteklenmeyen bir yönerge, yazım hatası veya sunucuda etkin olmayan bir modüldür. Hata günlüğündeki mesajı incelemeden rastgele yeni kurallar eklemeyin; son eklediğiniz bloğu geçici olarak kaldırıp siteyi tekrar doğrulayın.
Gzip yalnızca istemci bunu desteklediğinde uygulanmalıdır; Apache’nin modülü bu içerik pazarlığını normalde yanıt başlıkları üzerinden yönetir. Ayrıca uygulama, CDN veya hosting paneli zaten sıkıştırma yapıyorsa aynı işi ikinci kez
.htaccess dosyasına mod_deflate kurallarını ekleyebilirsiniz. En küçük uygulanabilir yapılandırma, HTML, CSS, JavaScript, JSON, XML ve SVG gibi sıkıştırılmaya uygun içerik türlerini hedeflemelidir.Çalışan temel yapılandırma
Ön koşul olarak Apache üzerinde
mod_deflate ve AddOutputFilterByType yönergesini sağlayan mod_filter etkin olmalı ve sunucu, ilgili dizinde .htaccess içindeki FileInfo türü yönergelere izin vermelidir. Sitenin belge kök dizinindeki mevcut .htaccess dosyasını yedekleyin ve aşağıdaki bloğu ekleyin:
Kod:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
.htaccessdosyasını sitenin doğru belge köküne veya kuralların uygulanmasını istediğiniz alt dizine yerleştirin.- Dosyanın mevcut kurallarına ekleme yapın; özellikle yönlendirme, erişim ve önbellek kurallarını silmeyin.
- Değişikliği kaydedin ve sunucunun hata günlüğünü kontrol ederek Apache yapılandırma hatası oluşmadığını doğrulayın.
- Gzip isteyen bir istemci başlığıyla metin dosyasını test edin.
Örnek test (Linux/macOS gibi POSIX kabukta /dev/null kullanılır):
Kod:
curl -sS -D - -o /dev/null -H "Accept-Encoding: gzip" https://example.com/
Başarılı sonuçta yanıt başlıkları arasında
Content-Encoding: gzip görülmelidir. Vary: Accept-Encoding başlığı da önbelleklerin Gzip destekleyen ve desteklemeyen istemcileri birbirinden ayırmasına yardımcı olur. Ana sayfa HTML üretmiyorsa, aynı testi gerçek bir CSS veya JavaScript dosyası üzerinde yapmak daha anlamlıdır.Hangi dosyalar sıkıştırılmalı?
Gzip özellikle metin içeriğinde tekrar eden karakterleri azaltır. Görsel, video, arşiv ve çoğu yazı tipi dosyası zaten sıkıştırılmış olduğundan bunları tekrar Gzip yapmak genellikle gereksiz işlem yükü oluşturur.
| İçerik | Gzip kararı | Gerekçe |
|---|---|---|
| HTML, CSS, JavaScript | Etkinleştir | Metin yapısı nedeniyle genellikle iyi sıkışır. |
| JSON ve XML | Etkinleştir | API ve veri yanıtlarında aktarılacak metin azalır. |
| SVG | Genellikle etkinleştir | Metin tabanlıdır; ancak dosyanın gerçekten SVG MIME türüyle sunulduğunu kontrol edin. |
| JPG, PNG, GIF, MP4, ZIP, PDF | Genellikle hariç bırak | Çoğu zaten sıkıştırılmıştır; ek kazanç düşük olabilir. |
Sonuç alınmazsa nasıl yorumlanır?
Content-Encoding: gzip yoksa önce test isteğinde Accept-Encoding: gzip gönderildiğini kontrol edin. Ardından dosyanın listelenen MIME türlerinden biriyle sunulup sunulmadığına bakın. Kural hiç çalışmıyorsa mod_deflate etkin olmayabilir veya sunucu .htaccess içinde bu yönergelere izin vermiyor olabilir. Bu durumda hosting yöneticisinin Apache yapılandırmasında modülü ve AllowOverride izinlerini kontrol etmesi gerekir.Değişiklikten sonra 500 hatası oluşursa hatanın nedeni çoğunlukla desteklenmeyen bir yönerge, yazım hatası veya sunucuda etkin olmayan bir modüldür. Hata günlüğündeki mesajı incelemeden rastgele yeni kurallar eklemeyin; son eklediğiniz bloğu geçici olarak kaldırıp siteyi tekrar doğrulayın.
Gzip yalnızca istemci bunu desteklediğinde uygulanmalıdır; Apache’nin modülü bu içerik pazarlığını normalde yanıt başlıkları üzerinden yönetir. Ayrıca uygulama, CDN veya hosting paneli zaten sıkıştırma yapıyorsa aynı işi ikinci kez
.htaccess üzerinden zorlamayın. Testte hedef, dosyanın istemciye tek kez ve uygun içerik türüyle sıkıştırılmış ulaşmasıdır.