Apache sunucularında web sitesi performansını artırmak, kullanıcı deneyimini iyileştirmek ve sunucu yükünü azaltmak için mod_deflate ve mod_expires modülleri vazgeçilmez
Apache sunucularında web sitesi performansını artırmak, kullanıcı deneyimini iyileştirmek ve sunucu yükünü azaltmak için mod_deflate ve mod_expires modülleri vazgeçilmez araçlardır. mod_deflate, içerik sıkıştırma yoluyla bant genişliği kullanımını minimize ederken, mod_expires tarayıcı önbellekleme sürelerini yöneterek gereksiz istekleri önler. Bu modüllerin doğru yapılandırılması, özellikle yüksek trafikli kurumsal sitelerde belirgin hız kazanımları sağlar. Bu makalede, her iki modülün etkinleştirilmesi, yapılandırılması ve pratik kullanım adımlarını adım adım inceleyeceğiz. Sunucu yöneticileri için somut örnekler ve en iyi uygulamalarla rehberlik ederek, optimizasyon sürecinizi kolaylaştıracağız.
mod_deflate, HTTP yanıtlarını gzip veya deflate algoritmalarıyla sıkıştırarak veri transferini hızlandırır. Bu modül varsayılan olarak Apache 2.x sürümlerinde mevcut olsa da, etkinleştirilmesi ve doğru ayarlanması performans için kritiktir. Öncelikle, modülün yüklü olup olmadığını kontrol edin: apachectl -M | grep deflate komutuyla sorgulayın. Yüklü değilse, a2enmod deflate komutunu çalıştırın ve Apache’yi yeniden başlatın: systemctl restart apache2.
Ubuntu/Debian tabanlı sistemlerde mod_deflate yüklemek için sudo apt install libapache2-mod-deflate kullanın. CentOS/RHEL için ise yum install mod_deflate uygundur. Yükleme sonrası .htaccess veya httpd.conf dosyasına şu direktifleri ekleyin: SetOutputFilter DEFLATE. Bu, tüm yanıtları otomatik sıkıştırmaya alır. Ancak, zaten sıkıştırılmış içerikler (resimler, videolar) için filtreyi hariç tutun: SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|gz)$ no-gzip dont-vary. Bu ayar, gereksiz işlemeyi önler ve CPU yükünü dengeler. Test için curl ile kontrol edin: curl -I -H "Accept-Encoding: gzip" https://ornek.com; Content-Encoding: gzip başlığını görmelisiniz.
Sıkıştırma seviyesini belirlemek için DeflateCompressionLevel 6 ekleyin; 1 en hızlı, 9 en yüksek sıkıştırma sağlar. Belirli MIME türlerini hedefleyin: AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css text/javascript application/javascript. Bu, metin tabanlı dosyaları önceliklendirir. Loglama için LogFormat "%in"%\{User-Agent\}i" %{mod_deflate}x" deflate ve CustomLog logs/deflate.log deflate kullanın. Uygulamada, bir HTML dosyasının boyutu %70 azalabilir, bu da mobil kullanıcılar için kritik öneme sahiptir. Yapılandırmayı doğrulayın ve sunucuyu yeniden yükleyin: apachectl graceful.
Bu bölümdeki adımlar uygulandığında, mod_deflate sunucunuzun bant genişliği verimliliğini önemli ölçüde artırır. Gerçek dünya senaryolarında, dinamik PHP sayfaları için en etkili sonuçlar alınır.
mod_expires, Expires ve Cache-Control başlıklarını otomatik ekleyerek tarayıcı ve proxy önbelleklemesini yönetir. Bu, statik kaynakların tekrar tekrar indirilmesini engelleyerek sunucu trafiğini azaltır. Modülü etkinleştirmek için a2enmod expires çalıştırın ve konfigürasyon dosyasını güncelleyin.
httpd.conf veya .htaccess’e ExpiresActive On ekleyin. Bu, modülü aktif hale getirir. Statik dosyalar için ExpiresByType image/jpg "access plus 1 year" gibi kurallar tanımlayın. Süre birimleri: seconds, minutes, hours, days, weeks, months, years. CSS ve JS için ExpiresByType text/css "access plus 1 month", HTML için ExpiresByType text/html "access plus 1 hour" idealdir. Cache-Control ekleyin: ExpiresDefault "access plus 1 week". Bu ayarlar, tarayıcının dosyayı ne kadar süre yerel olarak saklayacağını belirler ve If-Modified-Since isteklerini minimize eder.
Dinamik içerikler için koşullu kurallar kullanın: <FilesMatch "\.(html|htm)$"> ExpiresActive On ExpiresDefault "now plus 1 hour" </FilesMatch>. Versiyonlama ile çakışmaları önleyin, örneğin dosya adlarına ?v=1.2 ekleyin. Doğrulama için geliştirici araçlarında Network sekmesini inceleyin; Cache-Control: max-age değerlerini kontrol edin. Proxy sunucular için Vary: Accept-Encoding başlığını ekleyin. Uygulamada, bir e-ticaret sitesinde statik asset’ler için 1 yıllık önbellek, sayfa yükleme süresini %40 kısaltabilir. Yeniden başlatma sonrası curl -I https://ornek.com/style.css ile Expires başlığını doğrulayın.
mod_expires’in bu yapılandırmaları, içerik dağıtım ağlarıyla entegre edildiğinde maksimum etkinlik sağlar ve bakım maliyetlerini düşürür.
İki modülü entegre etmek, kapsamlı bir optimizasyon katmanı oluşturur. .htaccess dosyasında mod_deflate’i önce, mod_expires’i sonra yerleştirin ki sıkıştırma önbelleğe alınmış içerikte çalışsın. Örnek konfigürasyon: deflate filtrelerini MIME bazında tanımlayın, ardından expires kurallarını uygulayın. Bu kombinasyon, gzip’lenmiş CSS dosyalarının uzun süre önbelleğe alınmasını sağlar.
Tam .htaccess bloğu şöyle olabilir: <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain text/html ... </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "access plus 1 year" ... </IfModule>. Bu, sıkıştırılmış dosyaların cache header’larıyla işaretlenmesini garanti eder. Sunucu loglarında deflate ve expires etkinliklerini izleyin. Performans testi için GTmetrix veya PageSpeed Insights kullanın; skorlarınız yükselecektir.
Yaygın sorun: Eski tarayıcı uyumsuzluğu; BrowserMatch ^Mozilla/4 gzip-only-text/html ile çözün. CPU aşırı yükü için compression level’ı 4’e düşürün. HTTPS’te zorunlu sıkıştırma etkinleştirin. Düzenli bakımda, kuralları trafik paternlerine göre ayarlayın – örneğin, sezonluk içerikler için kısa ömür. Bu stratejilerle, kurumsal sitelerinizde %50’ye varan hız artışı gözlemlenebilir.
Sonuç olarak, mod_deflate ve mod_expires’i sistematik uygulayarak Apache sunucunuzu modern standartlara taşıyabilirsiniz. Bu modüllerin düzenli izlenmesi ve ince ayarlanması, uzun vadeli performans istikrarı sağlar. Hemen yapılandırmaya başlayın ve farkı ölçün; web siteleriniz daha hızlı, kullanıcılarınız daha memnun olacaktır.