Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Apache'de Mod_Expires ile Tarayıcı Önbellekleme: Site Hızınızı ve Sunucu Yükünüzü Azaltın 🚀

pixero

Üye
Katılım
14 Mart 2026
Mesajlar
11
Apache'de Mod_Expires ile Tarayıcı Önbellekleme: Site Hızınızı ve Sunucu Yükünüzü Azaltın 🚀

Selam sistemciler! 🖥️ Bugün, sitenizin kullanıcı deneyimini gözle görülür şekilde iyileştirecek, sunucu yükünüzü hafifletecek ve aslında kurulumu birkaç satır config'ten ibaret olan harika bir modülden bahsedeceğiz: mod_expires.

"Tarayıcı önbellekleme" deyince aklınıza ne geliyor? Kullanıcı sizin sitenize ilk kez geldiğinde, logo'nuzu, CSS dosyanızı, JavaScript'lerinizi ve ikonlarınızı indirir. Peki ya aynı kullanıcı 5 dakika sonra tekrar geldiğinde? Eğer doğru yapılandırmadıysanız, tüm bu statik dosyalar tekrar tekrar indirilir. Bu, hem kullanıcı için daha yavaş bir sayfa yüklenmesi (her seferinde tüm dosyalar yeniden çekiliyor), hem de sizin için gereksiz bant genişliği tüketimi ve sunucu yükü demek.

İşte mod_expires tam da burada devreye giriyor. Bu modül, Apache'nin HTTP yanıtlarına Expires ve Cache-Control başlıklarını eklemesini sağlar. Bu başlıklar tarayıcıya şunu söyler: "Al bu dosyayı, şu kadar süre boyunca sakla (önbelleğe al), ve o süre dolana kadar bir daha bana sorma, sakladığın kopyayı kullan."

Mod_expires'un Avantajları Neler?

  • Kullanıcı Tarafında Daha Hızlı Sayfa Yüklenmesi: Önbelleğe alınan dosyalar yerel diskten okunur, ağ üzerinden yeniden indirilmez. Bu, özellikle mobil kullanıcılar ve tekrar ziyaretçiler için muazzam bir hız artışı sağlar.
  • Sunucu Yükünde ve Bant Genişliğinde Azalma: Gereksiz istek sayısı düşer. Siteniz ne kadar popülerse, tasarrufunuz o kadar büyük olur. Bu, özellikle trafiği yüksek siteler ve CDN maliyetleri için kritiktir.
  • SEO'ya Olumlu Katkı: Sayfa yükleme hızı, Google dahil tüm arama motorları için önemli bir sıralama faktörüdür. Hızlanan siteniz, sıralamalarda da olumlu etki görebilir.
  • Kurulumu ve Yapılandırması Basit: Birkaç satır konfigürasyon ile hayata geçirilebilir.

Adım 1: Modülün Kontrolü ve Etkinleştirilmesi

Öncelikle, modülün yüklü ve etkin olup olmadığını kontrol edelim. Bir terminal açıp şu komutu çalıştıralım:

Bash:
sudo apache2ctl -M | grep expires_module
# veya
apachectl -M | grep expires_module

Eğer `expires_module (shared)` benzeri bir çıktı görürseniz, modül zaten yüklü ve aktif demektir. 🎉

Eğer görmezseniz, Debian/Ubuntu tabanlı sistemlerde şu komutlarla yükleyip etkinleştirebilirsiniz:

Bash:
sudo a2enmod expires
sudo systemctl restart apache2

CentOS/RHEL tabanlı sistemlerde ise genellikle `httpd` paketi ile birlikte gelir. `httpd -M` ile kontrol edebilirsiniz.

Adım 2: Yapılandırma - .htaccess veya VirtualHost

Artık sihirli kısmı yapılandıracağız. İki ana yöntemimiz var: Tek bir site için `.htaccess` dosyası, ya da tüm sunucu veya belirli bir VirtualHost için ana Apache konfigürasyon dosyaları.

Yöntem A: .htaccess Dosyası (Kolay ve Hızlı)
Sitenizin kök dizinindeki `.htaccess` dosyasını açın (yoksa oluşturun) ve aşağıdaki kuralları ekleyin:

Kod:
# Mod_expires'ı etkinleştir
ExpiresActive On

# Varsayılan önbellekleme süresi: 1 gün (1 yıl yapmak isterseniz "access plus 1 year")
ExpiresDefault "access plus 1 day"

# Görseller için daha uzun süre (1 ay)
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"

# CSS ve JavaScript için 1 hafta
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"

# PDF, fontlar ve diğer statik dosyalar
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"

Yöntem B: VirtualHost Konfigürasyonu (Tercih Edilen - Daha Performanslı)
`.htaccess` kullanmak Apache'ye ek yük bindirir çünkü her dizin için bu dosyayı kontrol eder. En iyi performans için, VirtualHost konfigürasyonunuzun (`<VirtualHost *:80> ... </VirtualHost>` bloğu) içine aynı direktifleri doğrudan yazın.

Örnek VirtualHost yapılandırması:

Kod:
<VirtualHost *:80>
    ServerName orneksitem.com
    DocumentRoot /var/www/orneksitem

    # Mod_expires Konfigürasyonu
    ExpiresActive On
    ExpiresDefault "access plus 1 day"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    # ... diğer kurallar
</VirtualHost>

Değişiklikleri kaydettikten sonra Apache'yi yeniden başlatmayı unutmayın:
Bash:
sudo systemctl reload apache2  # veya restart

Adım 3: Test Etme ve Doğrulama 🧪

Ayarlarınızın çalışıp çalışmadığını test etmek çok kolay.

1. **Tarayıcı Geliştirici Araçları:** Chrome/Firefox'ta sayfanıza sağ tıklayıp "İncele" deyin. "Network" (Ağ) sekmesine gidin ve sayfayı yenileyin (Ctrl+F5 değil, normal F5). İndirilen dosyalardan birine (örneğin bir `.png` veya `.css` dosyasına) tıklayın. Sağdaki panelde "Response Headers" bölümüne bakın. `Cache-Control: max-age=...` ve `Expires: ...` başlıklarını görmelisiniz.

2. **cURL ile Komut Satırından Test:** Terminalde şu komutu çalıştırın:
Bash:
curl -I https://orneksitem.com/logo.png
Çıktıda `Cache-Control` ve `Expires` satırlarını arayın.

Önemli Uyarılar ve İpuçları ⚠️

  • Geliştirme Aşamasında Dikkat! Geliştirme yaparken, tarayıcı önbelleği sizi çıldırtabilir. CSS'de yaptığınız bir değişikliği göremezsiniz. Bu durumda tarayıcınızın geliştirici araçlarındaki "Network" sekmesinde "Disable cache" (Önbelleği devre dışı bırak) kutusunu işaretleyebilir veya sayfayı "Ctrl+Shift+R" (Hard Refresh) ile yenileyebilirsiniz.
  • Süreleri Akıllıca Belirleyin. Sık değişen dosyalar (örneğin ana sayfa HTML'niz) için çok uzun süre vermeyin. Statik ve versiyonlanmış dosyalar (örn: `style.v2.css`, `app.5f6g7h.js`) için çok uzun süreler (1 yıl gibi) verebilirsiniz. Bu, "cache busting" olarak bilinen harika bir tekniktir.
  • Sunucu Tarafı Önbellekleme ile Karıştırmayın. Bu, sadece tarayıcı (istemci) önbelleğidir. Sunucu tarafında Nginx/Apache önbelleği, OPcache, Redis, CDN önbelleği gibi farklı kavramlar da vardır. Hepsi farklı katmanlarda çalışır.
  • Değişiklik yaptıktan sonra Apache konfigürasyon syntax'ını kontrol etmeyi unutmayın: `sudo apache2ctl configtest`

İşte bu kadar! Birkaç satır kod ile sitenizin performansına ve sunucunuzun nefes almasına büyük bir katkı yaptınız. 🚀

Peki siz mod_expires veya benzeri tarayıcı önbellekleme stratejilerini kullanıyor musunuz? Süreleri nasıl belirliyorsunuz, karşılaştığınız ilginç sorunlar oldu mu? Yorumlarda deneyimlerinizi paylaşın, birlikte öğrenelim! 💬
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri