Blogchevron_rightSunucu Yönetimichevron_rightNginx Önbellek Başlıkları: Statik Dosya Performans Rehberi

Nginx Önbellek Başlıkları: Statik Dosya Performans Rehberi

S
Serversium
calendar_today24 Mayıs 2026
schedule5 dk okuma
Nginx Önbellek Başlıkları: Statik Dosya Performans Rehberi

Nginx ile Statik Dosya Sunumunda Önbellek Başlıkları: Kapsamlı Rehber

Web performansını optimize etmenin en etkili yollarından biri, statik dosyaların doğru şekilde önbelleğe alınmasıdır. Nginx, yüksek performanslı web sunucusu olarak statik içerik sunumunda önbellek başlıklarını yapılandırmanızı sağlar. Doğru önbellek yapılandırması, sunucu yanıt sürelerini %60-80 oranında iyileştirebilir ve bant genişliği tüketimini önemli ölçüde azaltabilir.

Önbellek Başlıklarının Önemi

HTTP önbellek başlıkları, tarayıcıların ve ara bellek sunucularının içerikleri ne kadar süreyle saklayacağını belirler. Yanlış yapılandırılmış önbellek ayarları, gereksiz ağ trafiğine, yavaş sayfa yüklemelerine ve kötü kullanıcı deneyimine yol açar. Google'ın Core Web Vitals raporlarına göre, LCP (Largest Contentful Paint) skorları doğrudan statik kaynakların önbelleklenmesiyle ilişkilidir.

Önbellek Katmanları

Web mimarisinde üç temel önbellek katmanı bulunur:

  • Tarayıcı Önbelleği: Kullanıcının cihazında yerel olarak saklanan kaynaklar
  • CDN Önbelleği: İçerik dağıtım ağlarındaEdge sunucularda tutulan kopyalar
  • Reverse Proxy Önbelleği: Nginx gibi ara sunuculardaki önbellek

Temel HTTP Önbellek Başlıkları

1. Cache-Control

Cache-Control başlığı, modern HTTP önbelleklemenin temelini oluşturur. Bu başlık, önbellek davranışını detaylı şekilde kontrol eder.

location /static/ {
    expires 7d;
    add_header Cache-Control "public, max-age=604800, immutable";
}

2. ETag (Entity Tag)

ETag, içeriğin belirli bir sürümünü tanımlayan benzersiz bir tanımlayıcıdır. İçerik değiştiğinde ETag değeri de değişir, bu sayede tarayıcılar güncel içerik olup olmadığını kontrol edebilir.

location /static/ {
    etag on;
}

3. Last-Modified

Bu başlık, kaynağın son değiştirilme tarihini belirtir. İstemci, "If-Modified-Since" isteğiyle kaynağın değişip değişmediğini sorgulayabilir.

location /static/ {
    last_modified on;
}

4. Expires

Expires başlığı, kaynağın önbellekten kullanılabileceği kesin tarih ve saati belirtir. Cache-Control başlığıyla birlikte kullanılması önerilir.

expires modified +1w;

Nginx Önbellek Yapılandırması: Karşılaştırma Tablosu

Senaryo Cache-Control Değeri Önerilen Süre Kullanım Amacı
CSS ve JavaScript public, max-age=31536000, immutable 1 yıl Sürüm değişikliklerinde URL değişir
Görseller (logolar, ikonlar) public, max-age=2592000 30 gün Nadiren değişen görseller
Favicon ve manifest public, max-age=604800 1 hafta Site ikonları için
API yanıtları no-cache, must-revalidate Yok Her seferinde güncel veri gerekli
HTML sayfaları no-cache Yok Dinamik içerik

Pratik Nginx Yapılandırmaları

Statik Dosyalar İçin Tam Yapılandırma

server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    # Tüm statik dosyalar için önbellek
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
        access_log off;
    }

    # CSS ve JS için uzun süreli önbellek
    location ~* \.(css|js)$ {
        expires 1y;
        add_header Cache-Control "public, max-age=31536000, immutable";
    }

    # Önbellek break için versionlama
    location /assets/ {
        expires 1y;
        add_header Cache-Control "public, max-age=31536000, immutable";
        
        # Sürüm kontrolü
        if ($request_uri ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$) {
            add_header Vary "Accept-Encoding";
        }
    }
}

Proxied Backend İçin Önbellek

Bulut sunucu üzerinde Nginx'i reverse proxy olarak kullanıyorsanız, upstream yanıtlarını önbellekleyebilirsiniz:

proxy_cache_path /var/cache/nginx levels=1:2 
    keys_zone=static_cache:10m 
    max_size=100m 
    inactive=60m 
    use_temp_path=off;

server {
    location / {
        proxy_cache static_cache;
        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        add_header X-Cache-Status $upstream_cache_status;
        proxy_pass http://backend;
    }
}

Önbellek Başlıkları İçin En İyi Uygulamalar

1. immutable Özniteliği Kullanımı

CSS ve JavaScript dosyaları için "immutable" değeri kullanıldığında, içerik değişmediği sürece tarayıcı hiçbir şekilde sunucuya sorgu göndermez. Bu özellik, modern tarayıcılarda %100 desteklenmektedir.

2. Vary Başlığı

İçerik encoding (gzip/deflate) veya dil gibi faktörlere göre değişiyorsa, Vary başlığı kullanılmalıdır:

add_header Vary "Accept-Encoding, Accept-Language";

3. Önbellek Yıkma (Cache Busting)

Dosyalar güncellendiğinde tarayıcıların yeni sürümü yüklemesi için dosya adına sürüm numarası ekleyin:

# Önceki: style.css
# Sonraki: style.v1.2.3.css

4. Güvenlik Başlıkları

Önbellek başlıklarıyla birlikte güvenlik başlıklarını da ekleyin:

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;

Sık Yapılan Hatalar ve Çözümleri

Hata 1: Önbelleksiz Sunulan Statik Dosyalar

Yanlış: Tüm kaynaklar için "no-cache" kullanmak

Doğru: Statik dosyalar için uzun süreli önbellek süreleri belirlemek

Hata 2: Dinamik İçeriğin Aşırı Önbelleklenmesi

Yanlış: Oturum verileri içeren sayfaları uzun süre önbelleğe almak

Doğru: Kişiselleştirilmiş içerik için "no-cache" veya "private" kullanmak

Hata 3: ETag ve Last-Modified Eksikliği

Bu başlıklar olmadan, tarayıcılar içeriğin değişip değişmediğini anlayamaz ve her seferinde dosyayı yeniden indirir.

Performans İzleme ve Test

Önbellek yapılandırmanızı test etmek için Chrome DevTools veya curl kullanabilirsiniz:

curl -I https://example.com/style.css
HTTP/1.1 200 OK
Server: nginx
Cache-Control: public, max-age=31536000, immutable
ETag: "5f47a1b3-2c4d"
Expires: Thu, 01 Jan 2026 00:00:00 GMT

Sonuç

Nginx ile doğru önbellek başlıkları yapılandırmak, web sitesi performansını önemli ölçüde artırır. Statik dosyalar için uzun süreli önbellek (1 yıl), dinamik içerik için kısa süreli veya önbelleksiz yapılandırma kullanmalısınız. ETag ve Last-Modified başlıklarını etkin tutarak, içerik değişikliklerinde tarayıcıların hızlı tepki vermesini sağlayabilirsiniz.

Unutmayın: Önbellek, hem kullanıcı deneyimini hem de sunucu performansını doğrudan etkiler. Doğru yapılandırılmış bir önbellek sistemi, sunucu yükünü azaltırken kullanıcılara daha hızlı bir deneyim sunar.

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward